Mensaje WM_HSCROLL
Definición
WM_HSCROLL nScrollCode = (int) LOWORD(wParam); // valor de barra de desplazamiento nPos = (short int) HIWORD(wParam); // posición de la caja de desplazamiento hwndScrollBar = (HWND) lParam; // manipulador del barra de desplazamiento
El mensaje WM_HSCROLL es enviado a una ventana cuando ocurre un evento de su barra de desplazamiento horizontal estándar. Este mensaje también se envía a la ventana propietaria de un control de barra de desplazamiento horizontal cuando un evento ocurre en ese control.
Adicionalmente, los controles trackbar horizontales envían este mensaje a su ventana padre cuando el deslizador cambia de posición.
Descripción
nScrollCode: valor de la palabra de menor peso de wParam. Especifica un valor de barra de desplazamiento que indica una petición de desplazamiento del usuario. Este parámetro puede tomar uno de los siguientes valores:
Valor | Significado |
---|---|
SB_BOTTOM | Desplazamiento total a la derecha. |
SB_ENDSCROLL | Termina el desplazamiento. |
SB_LINELEFT | Desplaza a la izquierda una unidad. |
SB_LINERIGHT | Desplaza a la derecha una unidad. |
SB_PAGELEFT | Desplaza a la izquierda en el ancho de la ventana. |
SB_PAGERIGHT | Desplaza a la derecha en el ancho de la ventana. |
SB_THUMBPOSITION | Desplaza a una posición absoluta. La posición actual se especifica mediante el parámetro nPos. |
SB_THUMBTRACK | Arrastra la caja de desplazamiento a la posición especificada. La posición actual se especifica mediante el parámetro nPos. |
SB_TOP | Desplazamiento total a la izquierda. |
En el caso de controles trackbar, los códigos de notificación definidos son:
Valor | Significado |
---|---|
TB_BOTTOM | El usuario ha presionado al tecla FIN (VK_END). |
TB_ENDTRACK | El trackbar recibió un mensaje WM_KEYUP, que significa que el usuario a liberado una tecla que envía un código de tecla virtual relevante. |
TB_LINEDOWN | El usuario ha presionado la tecla RIGHT ARROW (VK_RIGHT) o DOWN ARROW (VK_DOWN). |
TB_LINEUP | El usuario ha presionado la tecla LEFT ARROW (VK_LEFT) o UP ARROW (VK_UP). |
TB_PAGEDOWN | El usuario ha hecho click en el canal por debajo o a la derecha del deslizador (VK_NEXT). |
TB_PAGEUP | El usuario ha hecho click en el canal por encima o a la izquierda del deslizador (VK_PRIOR). |
TB_THUMBPOSITION | El trackbar ha recibido un mensaje WM_LBUTTONUP seguido de un código de notificación TB_THUMBTRACK. |
TB_THUMBTRACK | El usuario a arrastrado el deslizador. |
TB_TOP | El usuario ha pulsado la tecla HOME (VK_HOME). |
nPos: valor de la palabra de mayor peso de wParam. Especifica la posición actual de la caja de desplazamiento si el parámetro nScrollCode es SB_THUMBPOSITION o SB_THUMBTRACK; en cualquier otro caso, nPos no se usa.
hwndScrollBar: valor de lParam. Identifica el control si el mensaje WM_HSCROLL fue enviado por un control de barra de desplazamiento. Si el mensaje WM_HSCROLL fue enviado por una barra de desplazamiento estándar, hwndScrollBar no se usa.
Valor de retorno
Si una aplicación procesa este mensaje, debe retornar con cero.
Observaciones
El mensaje de notificación SB_THUMBTRACK se usa normalmente por aplicaciones que proporcionan una respuesta mientras el usuario arrastra la caja de desplazamiento.
Análogamente, el código de notificación TB_THUMBTRACK se suele usar por aplicaciones que porporcionan una respuesta mientras el usuario desplaza el deslizador de un control trackbar.
Su una aplicación desplaza el contenido de una ventana, debe también actualizar la posición de la caja de desplazamiento usando la función SetScrollPos.
Como el mensaje WM_HSCROLL proporciona sólo 16 bits para el dato de la posición, las aplicaciones que confían sólo en WM_HSCROLL (y WM_VSCROLL) para actualizar las posiciones tienen un valor máximo de 65535.
Sin embargo, como las funciones SetScrollPos, SetScrollRange, GetScrollPos y GetScrollRange soportan valores de 32-bit para la posición de la barra de desplazamiento, existe un modo de sortear la barrera de 16-bit de los mensajes WM_HSCROLL y WM_VSCROLL. Ver GetScrollPos para ver una descripción de esa técnica y de sus límites.