winuser.h

Mensaje WM_MOUSEWHEEL

[Nuevo en Windows NT]

Definición

WM_MOUSEWHEEL
fwKeys = LOWORD(wParam);          // banderas de tecla
zDelta = (short) HIWORD(wParam);  // rotación de rueda
xPos = LOWORD(lParam);            // posición horizontal del cursor
yPos = HIWORD(lParam);            // posición vertical del cursor

El mensaje WM_MOUSEWHEEL se envía a la ventana con el foco cuando la rueda del ratón es rotada. La función DefWindowProc propaga el mensaje a la ventana padre. No se debe hacer un envío interno del mensaje, ya que DefWindowProc lo propaga a través de la cadena de ventanas padre hasta que encuentre una ventana que lo procese.

Descripción

fwKeys: valor de wParam. Indica si ciertas teclas están pulsadas. Este parámetro puede ser cualquier combinación de los siguientes valores:

Valor Descripción
MK_CONTROL Activo si la tecla CTRL está pulsada.
MK_LBUTTON Activo si el botón izquierdo del ratón está pulsado.
MK_MBUTTON Activo si el botón central del ratón está pulsado.
MK_RBUTTON Activo si el botón derecho del ratón está pulsado.
MK_SHIFT Activo si la tecla MAYÚSCULAS está pulsada.

zDelta: el valor de la palabra de mayor peso de wParam. Indica la distancia que la rueda haya rotado, expresada en múltiplos o submúltiplos de WHEEL_DELTA, que vale 120. Un valor positivo indica que la rueda fue rotada hacia adelante; un valor negativo indica que la rueda fue rotada hacia atrás, hacia el usuario.

xPos: valor de la palabra de menor peso de lParam. Especifica la coordenada x del cursor. La coordenada es relativa a la esquina superior izquierda del área de cliente.

yPos: valor de la palabra de mayor peso de lParam. Especifica la coordenada y del cursor. La coordenada es relativa a la esquina superior izquierda del área de cliente.

Observaciones

El parámetro zDelta puede ser un múltiplo de WHEEL_DELTA, cuyo valor se asigna a 120. Este es el umbral para que se tome una acción, y una de esas acciones (por ejemplo, desplazar un incremento) ocurrirá para cada delta.

El valor de delta se asigno a 120 para permitir a Microsoft o a otros fabricantes la construcción de ruedas de mayor precisión en el futuro, incluyendo tal vez ruedas de giro libre, sin muescas. Se espera que ese tipo de dispositivo pueda enviar más mensajes por rotación, pero con valores más pequeños en cada mensaje. Para soportar esta posibilidad, se debe sumar cualquier valor de delta recibido hasta que se alcance el valor WHEEL_DELTA (de modo que para el mismo delta de rotación se obtenga la misma respuesta), o desplazar líneas parcialmente en respuesta a mensajes más frecuentes. También se debe elegir la precisión de desplazamiento y acumular valores hasta que se alcance el valor de delta.

En la aplicación se puede usar la macro MAKEPOINTS para convertir el parámetro lParam a una estructura POINTS.