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:
Valor | Significado |
---|---|
SB_BOTTOM | Desplazamiento total hacia abajo. |
SB_ENDSCROLL | Termina el desplazamiento. |
SB_LINEUP | Desplaza hacia arriba una unidad. |
SB_LINEDOWN | Desplaza hacia abajo una unidad. |
SB_PAGEUP | Desplaza hacia arriba en la altura de la ventana. |
SB_PAGEDOWN | Desplaza hacia abajo en la altura 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 hacia arriba. |
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, 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.