WM_MOUSEWHEEL
[New
- Windows NT]
The
WM_MOUSEWHEEL message is sent to the focus window when the mouse wheel is
rotated. The DefWindowProc function propagates the message to the window s
parent. There should be no internal forwarding of the message, since
DefWindowProc propagates it up the parent chain until it finds a window that
processes it.
WM_MOUSEWHEEL
fwKeys = LOWORD(wParam); // key flags
zDelta = (short) HIWORD(wParam); // wheel rotation
xPos = (short) LOWORD(lParam); // horizontal position of pointer
yPos = (short) HIWORD(lParam); // vertical position of pointer
Parameters
fwKeys
Value of the
low-order word of wParam. Indicates whether various virtual keys are
down. This parameter can be any combination of the following values:
Value |
Description |
MK_CONTROL |
Set if the CTRL key is
down. |
MK_LBUTTON |
Set if the
left mouse button is down. |
MK_MBUTTON |
Set if the
middle mouse button is down. |
MK_RBUTTON |
Set if the
right mouse button is down. |
MK_SHIFT |
Set if the SHIFT key is
down. |
zDelta
The value of
the high-order word of wParam. Indicates the distance that the wheel is
rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. A
positive value indicates that the wheel was rotated forward, away from the
user; a negative value indicates that the wheel was rotated backward, toward
the user.
xPos
Value of the
low-order word of lParam. Specifies the x-coordinate of the pointer,
relative to the upper-left corner of the screen.
yPos
Value of the
high-order word of lParam. Specifies the y-coordinate of the pointer,
relative to the upper-left corner of the screen.
Remarks
The zDelta
parameter will be a multiple of WHEEL_DELTA, which is set at 120. This is the
threshold for action to be taken, and one such action (for example, scrolling
one increment) should occur for each delta.
The delta was
set to 120 to allow Microsoft or other vendors to build finer-resolution wheels
in the future, including perhaps a freely-rotating wheel with no notches. The
expectation is that such a device would send more messages per rotation, but
with a smaller value in each message. To support this possibility, you should
either add the incoming delta values until WHEEL_DELTA is reached (so for a
given delta-rotation you get the same response), or scroll partial lines in
response to the more frequent messages. You could also choose your scroll granularity
and accumulate deltas until it is reached.
See Also