Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Мышь и колесо прокрутки

6.5K
24 октября 2006 года
Kanary
33 / / 10.02.2005
Сообщение onClick и т.п. для какого-нибудь контрола подхватить в программе на .NET и обработать легко. Как сделать обработчик на прокрутку колеса мышки? И еще... У меня мышь двухколесная. Как тогда различать какое из колес повернулось?
Заранее спасибо всем...
713
24 октября 2006 года
Ap0k
360 / / 13.03.2006
Переопредели WndProc и обрабатывай WM_MOUSEWHEEL (0x020A)
6.5K
24 октября 2006 года
Kanary
33 / / 10.02.2005
Если я использую такой подход, как мне определить, какое из колес прокрутилось?

И еще, где взять вот этот код сообщения (0х020А например) или где определяются константы типа WM_MOUSEWHEEL?
713
24 октября 2006 года
Ap0k
360 / / 13.03.2006
1) Напиши тестовое приложение с обработкой этого соодщения и посмотри, какие данные поступают при прокручивании разных колес мышки.
2) смотреть в PlatformSDK, конретно в WinUser.h (заголовочные файлы копируются в директорию VisualStudio при установке с поддержкой компилятора C++)
723
25 октября 2006 года
Tommy
78 / / 13.10.2002
[QUOTE=Ap0k]Переопредели WndProc и обрабатывай WM_MOUSEWHEEL (0x020A)[/QUOTE]

Первое что пришло мне в голову при таком ответе: неужели если я захотел проверить покрутилось ли колесо, приложение перестаёт быть платформонезависимым. Это как-то странно и наверняка есть возможность избежать этого.
273
25 октября 2006 года
3A3-968M
1.2K / / 22.12.2005
Я всегда поражался тому как русские программисты ищут сложные решения для простых задача (именно по-этому я их уважаю).
В классе Control есть событие MouseWheel типы MouseEventHandler которое срабатывает на прокрутку колеса. Далее в классе System.Windows.Forms.SystemInformation есть свойства вида MouseWheelXXX, которые предоставляют сведения о колесе. А со вторым колесом - это уже определяет драйвер мыши. Именно драйвер определяет, можно ли его использовать для прокрутки или отключить или использовать только для тех приложений которые знают о подобной функциональности. Я считаю, что париться тебе со вторым колесом не надо - а если через год выпустят мышь с 20 колёсами - что теперь программу переписывать - эта забота пользователя который должен настраивать сей девайс.
6.5K
25 октября 2006 года
Kanary
33 / / 10.02.2005
С перехватом я разобрался. Еще вчера. Действительно все просто. А вот со вторым колесом...
Как я и ожидал, второе колесо генерируе точно те же ивенты, как и первое. Разницы нет. А должна же быть.
У меня изначально приложение задумывалось для двух колес мыши. Так что отбросить второе колесо я не могу, так как иначе приложение нужно будет полностью перестраивать.
Да и в конце концов, оставлять проблему нерешенной как-то нехорошо... Тем более что решение есть...
Если кто знает, как програмно отличить одно колесо мыши от другого - пишите.
273
25 октября 2006 года
3A3-968M
1.2K / / 22.12.2005
Тогда, получается, твоё приложение уже не будет корректно работать с компьютером, где мышь на одном колесе? Это не гибко. А работать со вторым колесом из managed-кода у тебя не получится.
723
26 октября 2006 года
Tommy
78 / / 13.10.2002
И вообще, весь апи предусматривает что у мышки одно колесо и всё тут. И ничего поделать тут просто нельзя, только для каждой мышки писать отдельный код.
273
26 октября 2006 года
3A3-968M
1.2K / / 22.12.2005
[quote=Tommy]И вообще, весь апи предусматривает что у мышки одно колесо и всё тут. И ничего поделать тут просто нельзя, только для каждой мышки писать отдельный код.[/quote]
Можно потеребить драйвер мыши, который установлен специально для этой модели мыши. Но приложение теряет свою переносимость.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог