winuser.h

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:

ValorSignificado
SB_BOTTOMDesplazamiento total a la derecha.
SB_ENDSCROLLTermina el desplazamiento.
SB_LINELEFTDesplaza a la izquierda una unidad.
SB_LINERIGHTDesplaza a la derecha una unidad.
SB_PAGELEFTDesplaza a la izquierda en el ancho de la ventana.
SB_PAGERIGHTDesplaza a la derecha en el ancho de la ventana.
SB_THUMBPOSITIONDesplaza a una posición absoluta. La posición actual se especifica mediante el parámetro nPos.
SB_THUMBTRACKArrastra la caja de desplazamiento a la posición especificada. La posición actual se especifica mediante el parámetro nPos.
SB_TOPDesplazamiento total a la izquierda.

En el caso de controles trackbar, los códigos de notificación definidos son:

ValorSignificado
TB_BOTTOMEl usuario ha presionado al tecla FIN (VK_END).
TB_ENDTRACKEl 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_LINEDOWNEl usuario ha presionado la tecla RIGHT ARROW (VK_RIGHT) o DOWN ARROW (VK_DOWN).
TB_LINEUPEl usuario ha presionado la tecla LEFT ARROW (VK_LEFT) o UP ARROW (VK_UP).
TB_PAGEDOWNEl usuario ha hecho click en el canal por debajo o a la derecha del deslizador (VK_NEXT).
TB_PAGEUPEl usuario ha hecho click en el canal por encima o a la izquierda del deslizador (VK_PRIOR).
TB_THUMBPOSITIONEl trackbar ha recibido un mensaje WM_LBUTTONUP seguido de un código de notificación TB_THUMBTRACK.
TB_THUMBTRACKEl usuario a arrastrado el deslizador.
TB_TOPEl 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.