Сообщение 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_LPARAM, GET_Y_LPARAM, GetSystemMetrics, GET_WHEEL_DELTA_WPARAM, HIWORD, LOWORD, MAKEPOINTS, mouse_event, POINTS, 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 |
Нет |
Замечания по платформе |
Не имеется |