WM_MOUSEWHEEL (mensaje)

Se envía a la ventana que tiene el foco cuando se gira la rueda del mouse. La función DefWindowProc propaga el mensaje al elemento primario de la ventana. No debe haber ningún reenvío interno del mensaje, ya que DefWindowProc lo propaga a la cadena primaria hasta que encuentra una ventana que lo procesa.

Una ventana recibe este mensaje mediante la función WindowProc.

#define WM_MOUSEWHEEL                   0x020A

Parámetros

wParam

La palabra de orden superior indica la distancia que se gira la rueda, expresada en múltiplos o fracciones de WHEEL_DELTA, que es 120. Un valor positivo indica que la rueda se ha girado hacia delante, hacia el lado contrario al usuario. Un valor negativo indica que la rueda se ha girado hacia atrás, hacia el usuario.

La palabra de orden inferior indica si hay varias teclas virtuales presionadas. Este parámetro puede ser uno o más de los siguientes valores.

Value Significado
MK_CONTROL
0x0008
La tecla CTRL está presionada.
MK_LBUTTON
0x0001
El botón izquierdo del mouse está presionado.
MK_MBUTTON
0x0010
El botón central del mouse está presionado.
MK_RBUTTON
0x0002
El botón derecho del mouse está presionado.
MK_SHIFT
0x0004
La tecla MAYÚS está presionada.
MK_XBUTTON1
0x0020
El primer botón X está presionado.
MK_XBUTTON2
0x0040
El segundo botón X está pulsado.

lParam

La palabra de orden inferior especifica la coordenada x del puntero, relativa a la esquina superior izquierda de la pantalla.

La palabra de orden superior especifica la coordenada y del puntero, relativa a la esquina superior izquierda de la pantalla.

Valor devuelto

Si la aplicación procesa este mensaje, debe devolver cero.

Comentarios

Utilice el siguiente código para obtener la información del parámetro wParam:

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

Utilice el siguiente código para obtener la posición horizontal y vertical:

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

Como se indicó anteriormente, la coordenada X está en el entero short de orden inferior del valor devuelto; la coordenada Y está en el entero short de orden superior (ambos representan valores con signo porque pueden tomar valores negativos en sistemas con varios monitores). Si el valor devuelto se asigna a una variable, puede usar la macro MAKEPOINTS para obtener una estructura POINTS a partir del valor devuelto. También puede usar las macros GET_X_LPARAM o GET_Y_LPARAM para extraer la coordenada X o Y.

Importante

No use las macros LOWORD ni HIWORD para extraer las coordenadas X e Y de la posición del cursor porque estas macros devuelven resultados incorrectos en sistemas con varios monitores. Los sistemas con varios monitores pueden tener coordenadas x e y negativas, y LOWORD y HIWORD tratan las coordenadas como cantidades sin signo.

El giro de la rueda será un múltiplo de WHEEL_DELTA, que está establecido en 120. Este valor es el umbral para que se realice una acción. Debe producirse una acción de este tipo (por ejemplo, desplazarse un incremento) por cada delta.

El delta se estableció en 120 para permitir a Microsoft y otros proveedores crear ruedas con una resolución más fina (una rueda que gira libremente sin muescas) con el fin de enviar más mensajes por giro, pero con un valor más pequeño en cada mensaje. Para usar esta característica, puede agregar los valores delta entrantes hasta que se alcance WHEEL_DELTA (de modo que obtiene la misma respuesta para un giro delta), o bien desplazar líneas parciales en respuesta a mensajes más frecuentes. También puede elegir una granularidad de desplazamiento y acumular deltas hasta que se alcance.

Tenga en cuenta que no hay fwKeys para MSH_MOUSEWHEEL. De lo contrario, los parámetros son exactamente los mismos que para WM_MOUSEWHEEL.

Es la aplicación la que debe reenviar MSH_MOUSEWHEEL a los objetos o controles insertados. La aplicación debe enviar el mensaje a una aplicación OLE insertada activa. Es opcional que la aplicación se lo envíe a un control habilitado para rueda con el foco. Si la aplicación envía el mensaje a un control, puede comprobar el valor devuelto para saber si se ha procesado el mensaje. Los controles deben devolver el valor TRUE si procesan el mensaje.

Requisitos

Requisito Valor
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Winuser.h (incluye Windowsx.h)

Consulte también

Referencia

GET_KEYSTATE_WPARAM

GET_X_LPARAM

GET_Y_LPARAM

GET_WHEEL_DELTA_WPARAM

HIWORD

LOWORD

mouse_event

Conceptual

Entrada de mouse

Otros recursos

GetSystemMetrics

MAKEPOINTS

POINTS

SystemParametersInfo