Уведомление WM_MOUSEWHEEL


Сообщение WM_MOUSEWHEEL отправляется в окно с фокусом, когда прокручивается колесико мыши. Функция DefWindowProc передает сообщение родителю окна. Не должна быть никакой внутренней переадресации сообщения, так как DefWindowProc  передает его вверх по цепочке родителей, пока функция не найдет окно, которое обработает его.

Окно получает это сообщение через посредство своей функции WindowProc.

Синтаксис

WM_MOUSEWHEEL
    WPARAM wParam
    LPARAM lParam;

Параметры

wParam

Старшее слово указывает  интервал, на который прокрутилось колесико, выраженный  в нескольких или раздельных WHEEL_DELTA, число которых - 120. Положительное значение указывает, что колесико вращалось вперед, в сторону от пользователя; отрицательное значение указывает, что колесико вращалось назад, к пользователю.

Младшее слово указывает, находятся ли в нажатом состоянии различные виртуальные клавиши. Этот параметр может состоять из одного или нескольких ниже перечисленных значений.

Значение Предназначение
MK_CONTROL Клавиша CTRL находится в нажатом состоянии.
MK_LBUTTON Левая кнопка мыши находится в нажатом состоянии.
MK_MBUTTON Средняя кнопка мыши находится в нажатом состоянии.
MK_RBUTTON Правая кнопка мыши находится в нажатом состоянии.
MK_SHIFT Клавиша SHIFT находится в нажатом состоянии.
MK_XBUTTON1 Windows 2000/XP: Первая X-кнопка находится в нажатом состоянии.
MK_XBUTTON2 Windows 2000/XP: Вторая X-кнопка находится в нажатом состоянии.

lParam

Младшее слово устанавливает x-координату указателя, относительно левого верхнего угла экрана.

Старшее слово устанавливает y-координату указателя, относительно левого верхнего угла экрана.

Возвращаемое значение

Если приложение обрабатывает это сообщение, оно должно возвратить нуль.

Замечания

Используйте ниже код, чтобы получить информацию в параметре wParam:

fwKeys = GET_KEYSTATE_WPARAM(wParam);
zDelta = GET_WHEEL_DELTA_WPARAM(wParam);

Используйте нижеследующий код, чтобы получить горизонтальную и вертикальную позицию:

xPos = GET_X_LPARAM (lParam); 
yPos = GET_Y_LPARAM (lParam); 

Вы можете также использовать и  макрос MAKEPOINTS, чтобы преобразовать параметр lParam в структуру POINTS.

Вращение колесика должно быть кратным  WHEEL_DELTA, число которых устанавливается  120. Это - пороговая величина для охватываемых действий, а одно такое действие (например, единичное увеличение прокрутки) должно происходить для каждой дельты.

Дельта была определена как 120, чтобы дать возможность Microsoft или другим продавцам создавать колесики  с более высокой разрешающей способностью в будущем, включая возможность свободно вращающегося  колесика без меток. Ожидается, что такое устройство будет отправлять больше сообщений при вращении, но с меньшей величиной дельта в каждом сообщении. Чтобы поддержать этот вариант, вы должны или добавлять поступающие  значения дельта, пока WHEEL_DELTA не достигнет предела  (так для дельта-прокрутки Вы получаете одно и то же ответное действие), или прокручиваете для просмотра часть строк в ответ на более частые сообщения. Вы можете также выбрать свою гранулярность (степень дробления) прокрутки и копить единицы дельта, пока параметр не достигнет предела.

Windows 95, Windows NT 3.51: Поддержка колесика мыши обеспечивается через посредство отдельно запускаемого модуля  MSWheel, который создает сообщение MSH_MOUSEWHEEL. Модуль MSWheel , который состоит из MSWheel.exe и MSWheel.dll, устанавливается с программой IntelliPoint, которая поставляется с устройством управления позицией IntelliMouse (Разумной мышью) ®. Кроме того, MSH_MOUSEWHEEL определяется в заголовочном файле (ZMouse.h), который приложение должно использовать, чтобы осуществить поддержку колесику через модуль MSWheel.

 
MSH_MOUSEWHEEL
zDelta = (int) wParam; // прокрутка колесика 
xPos = LOWORD(lParam); // указатель горизонтальной позиции 
yPos = HIWORD(lParam); // указатель вертикальной позиции

 

Обратите внимание! на то, что, для MSH_MOUSEWHEEL нет  fwKeys. В противном случае, параметры являются точно теми же, что и для WM_MOUSEWHEEL.

При отпуске кнопки  приложение переадресует MSH_MOUSEWHEEL любому внедренному объекту или органу управления. Приложение обязано отправлять сообщение активной программе с внедренной технологией OLE. Это дополнение, которое прикладная программа отправляет, дает возможность функционировать колесику в органе управления с фокусом. Если приложение  отправляет сообщение органу управления, оно может проверить возвращаемое значение, чтобы видеть, было ли сообщение обработано. Органы управления обязаны возвращать  значение ИСТИНА (TRUE), если они обрабатывают сообщение.

Смотри также

Обзор Ввод данных от мыши, Уведомления, используемые мышьюGET_KEYSTATE_WPARAM, GET_X_LPARAMGET_Y_LPARAM,  GetSystemMetrics,  GET_WHEEL_DELTA_WPARAM, HIWORDLOWORD, MAKEPOINTSmouse_eventPOINTS,  SystemParametersInfo

Размещение и совместимость WM_MOUSEWHEEL 

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 4.0 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Нет

Минимальная версия DLL

Нет

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz