Función ScrollWindowEx (winuser.h)

La función ScrollWindowEx desplaza el contenido del área de cliente de la ventana especificada.

Sintaxis

int ScrollWindowEx(
  [in]  HWND       hWnd,
  [in]  int        dx,
  [in]  int        dy,
  [in]  const RECT *prcScroll,
  [in]  const RECT *prcClip,
  [in]  HRGN       hrgnUpdate,
  [out] LPRECT     prcUpdate,
  [in]  UINT       flags
);

Parámetros

[in] hWnd

Tipo: HWND

Controlar hasta la ventana donde se va a desplazar el área de cliente.

[in] dx

Tipo: int

Especifica la cantidad, en unidades de dispositivo, de desplazamiento horizontal. Este parámetro debe tener un valor negativo para desplazarse a la izquierda.

[in] dy

Tipo: int

Especifica la cantidad, en unidades de dispositivo, de desplazamiento vertical. Este parámetro debe tener un valor negativo para desplazarse hacia arriba.

[in] prcScroll

Tipo: const RECT*

Puntero a una estructura RECT que especifica la parte del área de cliente que se va a desplazar. Si este parámetro es NULL, se desplaza el área de cliente completa.

[in] prcClip

Tipo: const RECT*

Puntero a una estructura RECT que contiene las coordenadas del rectángulo de recorte. Solo se ven afectados los bits de dispositivo dentro del rectángulo de recorte. Los bits que se desplazan desde fuera del rectángulo hasta el interior se pintan; los bits se desplazan desde el interior del rectángulo hasta el exterior no se pintan. Este parámetro puede ser NULL.

[in] hrgnUpdate

Tipo: HRGN

Controle a la región que se modifica para contener la región invalidada al desplazarse. Este parámetro puede ser NULL.

[out] prcUpdate

Tipo: LPRECT

Puntero a una estructura RECT que recibe los límites del rectángulo invalidado desplazando. Este parámetro puede ser NULL.

[in] flags

Tipo: UINT

Especifica marcas que controlan el desplazamiento. Este parámetro puede ser una combinación de los valores siguientes.

Value Significado
SW_ERASE
Borra la región recién invalidada enviando un mensaje de WM_ERASEBKGND a la ventana cuando se especifica con la marca SW_INVALIDATE.
SW_INVALIDATE
Invalida la región identificada por el parámetro hrgnUpdate después del desplazamiento.
SW_SCROLLCHILDREN
Desplaza todas las ventanas secundarias que intersecan el rectángulo al que apunta el parámetro prcScroll . Las ventanas secundarias se desplazan por el número de píxeles especificados por los parámetros dx y dy . El sistema envía un mensaje WM_MOVE a todas las ventanas secundarias que intersecan el rectángulo prcScroll , incluso si no se mueven.
SW_SMOOTHSCROLL
Se desplaza con desplazamiento suave. Use la parte HIWORD del parámetro flags para indicar cuánto tiempo, en milisegundos, debe tardar la operación de desplazamiento suave.

Valor devuelto

Tipo: int

Si la función se ejecuta correctamente, el valor devuelto es SIMPLEREGION (región invalidada rectangular), COMPLEXREGION (región no invalidada no rerectangular; rectángulos superpuestos) o NULLREGION (ninguna región invalidada).

Si se produce un error en la función, el valor devuelto es ERROR. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Si no se especifican las marcas de SW_INVALIDATE y SW_ERASE, ScrollWindowEx no invalida el área desde la que se desplaza. Si se establece alguna de estas marcas, ScrollWindowEx invalida esta área. El área no se actualiza hasta que la aplicación llama a la función UpdateWindow , llama a la función RedrawWindow (especificando la marca de RDW_UPDATENOW o RDW_ERASENOW) o recupera 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 se debe actualizar, incluidas las áreas de las ventanas secundarias que necesitan actualizarse.

Si se especifica la marca SW_SCROLLCHILDREN, el sistema no actualiza correctamente la pantalla si se desplaza parte de una ventana secundaria. La parte de la ventana secundaria desplazada que se encuentra fuera del rectángulo de origen no se borra y no se vuelve a dibujar correctamente en su nuevo destino. Para mover ventanas secundarias que no se encuentran completamente dentro del rectángulo especificado por prcScroll, use la función DeferWindowPos . El cursor se cambia de posición si se establece la marca de SW_SCROLLCHILDREN y el rectángulo de intercalación interseca el rectángulo de desplazamiento.

Todas las coordenadas de entrada y salida (para prcScroll, prcClip, prcUpdate y hrgnUpdate) se determinan como coordenadas de cliente, independientemente de si la ventana tiene el estilo de clase CS_OWNDC o CS_CLASSDC . Use las funciones LPtoDP y DPtoLP para convertir las coordenadas lógicas en y desde, si es necesario.

Ejemplos

Para obtener un ejemplo, vea Scrolling Text with the WM_PAINT Message.

Requisitos

   
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll
Conjunto de API ext-ms-win-ntuser-misc-l1-2-0 (introducido en Windows 8.1)

Consulte también

DPtoLP

AplazarWindowPos

LPtoDP

Otros recursos

RECT

Volver a dibujarWindow

UpdateWindow