winuser.h

Mensaje WM_VSCROLL

Definición

WM_VSCROLL
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 de la barra de desplazamiento

El mensaje WM_VSCROLL es enviado a una ventana cuando ocurre un evento de desplazamiento en su barra de desplazamiento vertical estándar. Este mensaje también se envía a la ventana propietaria de un control de barra de desplazamiento vertical cuando un evento ocurre en ese control.

Adicionalmente, los controles trackbar verticales 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 hacia abajo.
SB_ENDSCROLLTermina el desplazamiento.
SB_LINEUPDesplaza hacia arriba una unidad.
SB_LINEDOWNDesplaza hacia abajo una unidad.
SB_PAGEUPDesplaza hacia arriba en la altura de la ventana.
SB_PAGEDOWNDesplaza hacia abajo en la altura 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 hacia arriba.

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, SB_THUMBTRACK, TB_THUMBPOSITION o TB_THUMBTRACK; en cualquier otro caso, nPos no se usa.

hwndScrollBar: valor de lParam. Identifica el control si el mensaje WM_VSCROLL fue enviado por un control de barra de desplazamiento o por un trackbar. Si el mensaje WM_VSCROLL 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_VSCROLL proporciona sólo 16 bits para el dato de la posición, las aplicaciones que confían sólo en WM_VSCROLL (y WM_HSCROLL) 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_VSCROLL y WM_HSCROLL. Ver GetScrollPos para ver una descripción de esa técnica y de sus límites.