Колесо прокрутки вызывает событие EventMouseWheel дважды
|
|
Billi_Jo | Дата: Пятница, 13.01.2017, 21:08 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 39
Статус: Offline
| Здравствуйте. Использую либу Window9. Есть такой участок кода:
Код do event = WaitEvent() select case event case EventMouseWheel if EventKEY<0 and zoom<4 then zoom+=1 if EventKEY>0 and zoom>0 then zoom-=1 ... end select loop Так вот, при срабатывании колеса прокрутки, переменная zoom увеличивается/уменьшается на 1 как положено, а затем, если курсор начнет перемещаться или сработает кнопка мыши переменная zoom снова увеличивается/уменьшается на 1 (в зависимости от того в какую сторону вращалось колесо ранее). Не могу отловить этот баг. У кого-нибудь было подобное?
Сообщение отредактировал Billi_Jo - Пятница, 13.01.2017, 21:09 |
|
| |
haav | Дата: Пятница, 13.01.2017, 23:19 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| По такому клочку кода невозможно определить ошибку. Вот этот код (все работает как надо):
Код #Include "window9.bi" Dim As Integer hwnd,zoom hwnd=OpenWindow("",10,10,200,200)
Do Var event = WaitEvent() Select Case event Case EventMouseWheel If EventKEY<0 And zoom<4 Then zoom+=1 If EventKEY>0 And zoom>0 Then zoom-=1 ? zoom Case eventclose Exit Do End Select Loop
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Billi_Jo | Дата: Суббота, 14.01.2017, 14:11 | Сообщение # 3 |
Сержант
Группа: Пользователи
Сообщений: 39
Статус: Offline
| Поймал! Как оказалось проблемы создает ContainerGadget():
Код #Include "window9.bi"
#define TXT_ZOOM 100 #define TOOLBAR 101 #define BUT 102
dim shared as HWND hwnd dim shared as Integer zoom,event hwnd=OpenWindow("",10,10,200,200)
UseGadgetList(hwnd) ContainerGadget(TOOLBAR,10,10,100,100,0) ButtonGadget(BUT,10,10,60,30,"button") TextGadget(TXT_ZOOM,10,60,40,20,str(zoom))
Do event = WaitEvent() Select Case event Case EventMouseWheel if EventKEY<0 and zoom<4 then zoom+=1 if EventKEY>0 and zoom>0 then zoom-=1 SetGadgetText(TXT_ZOOM,str(zoom)) Case eventclose Exit Do End Select Loop Если нажать на кнопку, а затем покрутить колесом мыши, начнутся двойные срабатывания EventMouseWheel. Как подружить ContainerGadget с колесом прокрутки?
Сообщение отредактировал Billi_Jo - Суббота, 14.01.2017, 14:14 |
|
| |
haav | Дата: Воскресенье, 15.01.2017, 15:54 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: Offline
| Что тут сказать, баг в библиотеке. Будет время, а главное желание , попробую исправить.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Billi_Jo | Дата: Воскресенье, 15.01.2017, 19:51 | Сообщение # 5 |
Сержант
Группа: Пользователи
Сообщений: 39
Статус: Offline
| OK, будем ждать и надеяться)
|
|
| |