Мышь и колесо прокрутки
Заранее спасибо всем...
Переопредели WndProc и обрабатывай
И еще, где взять вот этот код сообщения (0х020А например) или где определяются константы типа WM_MOUSEWHEEL?
2) смотреть в PlatformSDK, конретно в WinUser.h (заголовочные файлы копируются в директорию VisualStudio при установке с поддержкой компилятора C++)
WM_MOUSEWHEEL (0x020A)[/QUOTE]
Первое что пришло мне в голову при таком ответе: неужели если я захотел проверить покрутилось ли колесо, приложение перестаёт быть платформонезависимым. Это как-то странно и наверняка есть возможность избежать этого.
[QUOTE=Ap0k]Переопредели WndProc и обрабатывай
Первое что пришло мне в голову при таком ответе: неужели если я захотел проверить покрутилось ли колесо, приложение перестаёт быть платформонезависимым. Это как-то странно и наверняка есть возможность избежать этого.
В классе Control есть событие MouseWheel типы MouseEventHandler которое срабатывает на прокрутку колеса. Далее в классе System.Windows.Forms.SystemInformation есть свойства вида MouseWheelXXX, которые предоставляют сведения о колесе. А со вторым колесом - это уже определяет драйвер мыши. Именно драйвер определяет, можно ли его использовать для прокрутки или отключить или использовать только для тех приложений которые знают о подобной функциональности. Я считаю, что париться тебе со вторым колесом не надо - а если через год выпустят мышь с 20 колёсами - что теперь программу переписывать - эта забота пользователя который должен настраивать сей девайс.
Как я и ожидал, второе колесо генерируе точно те же ивенты, как и первое. Разницы нет. А должна же быть.
У меня изначально приложение задумывалось для двух колес мыши. Так что отбросить второе колесо я не могу, так как иначе приложение нужно будет полностью перестраивать.
Да и в конце концов, оставлять проблему нерешенной как-то нехорошо... Тем более что решение есть...
Если кто знает, как програмно отличить одно колесо мыши от другого - пишите.
Тогда, получается, твоё приложение уже не будет корректно работать с компьютером, где мышь на одном колесе? Это не гибко. А работать со вторым колесом из managed-кода у тебя не получится.
И вообще, весь апи предусматривает что у мышки одно колесо и всё тут. И ничего поделать тут просто нельзя, только для каждой мышки писать отдельный код.
Можно потеребить драйвер мыши, который установлен специально для этой модели мыши. Но приложение теряет свою переносимость.