FreeBasic
Главная
Вход
Регистрация
Суббота, 23.09.2017, 10:29Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Библиотеки для FreeBasic » Библиотека Window9 для Freebasic » Колесо прокрутки вызывает событие EventMouseWheel дважды
Колесо прокрутки вызывает событие EventMouseWheel дважды
Billi_JoДата: Пятница, 13.01.2017, 21:08 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 0
Статус: 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
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: 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
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 0
Статус: 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
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Что тут сказать, баг в библиотеке. Будет время, а главное желание , попробую исправить.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Billi_JoДата: Воскресенье, 15.01.2017, 19:51 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 0
Статус: Offline
OK, будем ждать и надеяться)
 
Форум » Библиотеки для FreeBasic » Библиотека Window9 для Freebasic » Колесо прокрутки вызывает событие EventMouseWheel дважды
Страница 1 из 11
Поиск: