winuser.h


ScrollWindowEx

La función ScrollWindowEx desplaza el contenido del área de cliente de la ventana especificada. Esta función es similar a la función ScrollWindow, pero dispone de características adicionales.

Sintaxis

int ScrollWindowEx(
    HWND hWnd,              // manipulador de ventana a desplazar
    int dx,                 // cantidad de desplazamiento horizontal
    int dy,                 // cantidad de desplazamiento vertical
    CONST RECT *prcScroll,  // dirección de estructura con rectángulo de desplazamiento
    CONST RECT *prcClip,    // dirección de estructura con rectángulo de crecorte
    HRGN hrgnUpdate,        // manipulador de región de actualización
    LPRECT prcUpdate,       // dirección de estructura para rectángulo de actualización
    UINT flags              // banderas de desplazamiento
   );

Parámetros

hWnd: identifica la ventana cuya área de cliente debe ser desplazada.

dx: especifica la cantidad, en unidades de dispositivo, de desplazamiento horizontal. Este parámetro debe ser un valor negativo para desplazar el contenido de la ventana hacia la izquierda.

dy: especifica la cantidad, en unidades de dispositivo, de desplazamiento vertical. Este parámetro debe ser un valor negativo para desplazar el contenido de la ventana hacia arriba.

prcScroll: apunta a la estructura RECT que especifica la porción del área de cliente a desplazar. Si este parámetro es NULL, se desplaza el área de cliente entera.

prcClip: apunta a la estructura RECT que contiene las coordenadas del rectángulo de recorte. Sólo aquellos bits del dispositivo dentro del rectángulo de recorte se verán afectados. Los bits desplazados desde fuera del rectángulo a su interior serán pintados; los bits desplazados desde el interior del rectángulo al exterior, no.

hrgnUpdate: identifica la región que que se modifica para obtener la región invalidada por el desplazamiento. Este parámetro puede ser NULL.

prcUpdate: apunta a una estructura RECT que recibe los límites del rectángulo invalidado por el desplazamiento. Este parámetro puede ser NULL.

flags: especifica las banderas de control de desplazamiento. Este parámetro puede ser uno de los siguientes valores:

Valor Significado
SW_ERASE Borra la región recien invalidada mediante el envío de un mensaje WM_ERASEBKGND a la ventana cuando se especifica con la bandera SW_INVALIDATE.
SW_INVALIDATE Invalida la región identificada por el parámetro hrgnUpdate después del desplazamiento.
SW_SCROLLCHILDREN Desplaza todas las ventanas hijas que interseccionen con el rectángulo apuntado por el parámetro prcScroll. Las ventanas hijas se desplazan en el número de pixels especificados por los parámetros dx y dy. Windows envía un mensaje WM_MOVE a todas las ventanas hijas que interseccionen con el rectángulo prcScroll, aunque no se hayan movido.

Valor de retorno

Si la función tiene éxito, el valor de retorno es SIMPLEREGION (región rectángular invalidada), COMPLEXREGION (región no rectángular invalidada; rectángulos superpuestos), o NULLREGION (ninguna región invalidada).

Si la función falla, el valor de retorno es ERROR.

Observaciones

Si no se especifican las banderas SW_INVALIDATE y SW_ERASE, ScrollWindowEx no invalida el área desde la que se ha hecho el desplazamiento. Si cualquiera de estas banderas está activa, ScrollWindowEx invalida ese área. El área no se actualiza hasta que la aplicación llame a la función UpdateWindow, llame a la función RedrawWindow (especificando la bandera RDW_UPDATENOW o RDW_ERASENOW), o recupere el mensaje WM_PAINT de la cola de la aplicación.

Si la ventana tiene el estilo WS_CLIPCHILDREN, las áreas devueltas especificadas por hrgnUpdate y prcUpdate representan el área total de la ventana desplazada que debe ser actualizada, incluyendo cualquier área en ventanas hijas que necesiten actualizarse.

Si se especifica la bandera SW_SCROLLCHILDREN, Windows no actualiza adecuadamente la pantalla si parte de una ventana hija es desplazada. La parte de la ventana hija desplazada que quede fuera del rectángulo de origen no es borrada ni es redibujada adecuadamente en su nuevo destino. Para mover las ventanas hijas que no queden completamente dentro del rectángulo especificado por prcScroll, usar la función DeferWindowPos. El cursor es reposicionado si la bandera SW_SCROLLCHILDREN está activa y el rectángulo del caret se intersecciona con el rectángulo de desplazamiento.

Todas las coordenadas de entrada y salida (para prcScroll, prcClip, prcUpdate y hrgnUpdate) son coordenadas de cliente, independientemente de si la ventana tiene los estilos CS_OWNDC o CS_CLASSDC. Usar las funciones LPtoDP y DPtoLP para convertir a y desde coordenadas lógicas, si es necesario.