Как ловить оба ролика мыши?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Arkadia
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 26.02.2006 (Вс) 15:23

Как ловить оба ролика мыши?

Сообщение Arkadia » 10.07.2008 (Чт) 15:41

Есть мышь A4TECH WOP-35. Путем подбора драйверов найдены такие, которые работают даже в неактивном окне. Сейчас оба ролика работают в различных программах, в IDE VB5, и в программах на VB, запущенных из IDE: отлавливают ближайший scrollbar справа или снизу, и его двигают. Однако, та же VB программа, будучи скомпилированной в exe, не реагирует на ролики мыши даже будучи в фокусе.
Начал делать отслеживание ролика через WM_MOUSEWHEEL, но там оба ролика работают одинаково. Хочется, чтобы вертикальный ролик крутил vcroll, а горизонтальный - hscroll.

Мышь BW-5 работает аналогично, со штатными драйверами (только у нее не ролик, а две кнопки влево-вправо).

Ключевые слова: mouse, wheel, колесо, колесико, хук, hook.

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 10.07.2008 (Чт) 20:09

Поставь хук на окно где работает оба ролика (см. Spy++), и смотреть какие сообщения посылаются.
Изображение

Arkadia
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 26.02.2006 (Вс) 15:23

Сообщение Arkadia » 11.07.2008 (Пт) 1:25

Оба ролика работают во всех программах, что есть на компе. За исключением скомпилированных VB прог.

Взял для примера lister от Total Commander-а. Ему посылаются
WM_HSCROLL и WM_VSCROLL . В своей проге пытаюсь поймать их - нету, только WM_MOUSEWHEEL .

Наверное, в VB неправильные scrollbar-ы, их драйвер мыши не видит. Но под IDE их же - видит...

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 11.07.2008 (Пт) 5:43

Там контролы старые. В том числе что бы допустим прогрессбар стал не синим (как в 98), а зелёным (XP) - надо поменять стиль или юзать сторонние контролы. При том в дельфях прогрессбар сразу такой, какой и должен быть в системе. Скроллбары почему-то тоже квадратные, а не скруглёные. Объясните почему плз? Тама активекс контрол другою юзается в XP/Vista? Или тоже стиль меняется принудительно? А то я не очень компитентен в данном вопросе.

Arkadia
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 26.02.2006 (Вс) 15:23

Сообщение Arkadia » 11.07.2008 (Пт) 11:33

То есть мне нужно избавиться от встроенных vscrollbar и hscrollbar? Я не против, они глючно себя ведут.
Пытаюсь (пока безрезультатно) найти пример, как сделать скроллы через API. Должно быть что-то типа найденного на ixbt примера: CreateUpDownControl Lib "ComCtl32.dll", но про скроллбары.

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Сообщение Atoman » 11.07.2008 (Пт) 12:59

Arkadia писал(а):Пытаюсь (пока безрезультатно) найти пример, как сделать скроллы через API.


http://www.frolov-lib.ru/books/bsp/v12/ch2_3.htm

Arkadia
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 26.02.2006 (Вс) 15:23

Сообщение Arkadia » 20.07.2008 (Вс) 13:04

Нашел вот это: http://www.vbaccelerator.com/home/VB/Co ... rticle.asp , доделываю для похожести на стандартный скроллбар по свойствам и поведению. Добавил кое-что, что давно хотел: возможность записи value без генерации евента (раньше глобальные флаги плодил); борьбу с мышками, которые крутят несколько строк одним поворотом колеса...
Однако вопрос возник: как организовать мигание apiшного скролла, созданного CreateWindowEx(0, "SCROLLBAR",... ?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 67

    TopList