Compartir a través de


Método IOleInPlaceSiteWindowless::ScrollRect (ocidl.h)

Habilita a un objeto para desplazarse por un área dentro de su imagen activa en contexto en la pantalla.

Sintaxis

HRESULT ScrollRect(
  [in] INT     dx,
  [in] INT     dy,
  [in] LPCRECT pRectScroll,
  [in] LPCRECT pRectClip
);

Parámetros

[in] dx

Cantidad que se va a desplazar por el eje X.

[in] dy

Cantidad que se va a desplazar por el eje Y.

[in] pRectScroll

Rectángulo que se va a desplazar, en coordenadas de cliente de la ventana contenedora. Un valor de NULL indica el objeto completo.

[in] pRectClip

Rectángulo que se va a recortar. Solo se representan los píxeles que se desplazan en este rectángulo. Los píxeles que se salen de este, no. Si este parámetro es NULL, el rectángulo no se recorta.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente.

Comentarios

Este método debe tener en cuenta el hecho de que el autor de la llamada puede ser transparente y que puede haber objetos superpuestos opacos o transparentes. Consulte Notas para los implementadores a continuación para obtener sugerencias sobre los algoritmos que puede usar este método.

Notas para los implementadores

Los contenedores pueden implementar este método de varias maneras. Sin embargo, todos ellos deben tener en cuenta la posibilidad de que el objeto que solicita desplazamiento sea transparente o no tenga un fondo sólido. Los contenedores también deben tener en cuenta que puede haber objetos superpuestos.

La manera más sencilla de implementar este método consiste en volver a dibujar el rectángulo para desplazarse.

Un refinamiento agregado a esta implementación sencilla es usar la función ScrollDC cuando el objeto que solicita el desplazamiento es opaco, el objeto tiene un fondo sólido y no hay objetos superpuestos.

Las implementaciones más sofisticadas pueden usar el procedimiento siguiente:

  • Compruebe si el objeto es opaco y tiene un fondo sólido, con IViewObjectEx::GetViewStatus. Si no es así, simplemente invalide el rectángulo que se va a desplazar. Un refinamiento agregado es comprobar si el rectángulo de desplazamiento está completamente en la región opaca de un objeto parcialmente transparente.
  • Obtenga el contexto del dispositivo de ventana.
  • Recorte las partes opacas de cualquier objeto superpuesto devuelto por IViewObjectEx::GetRect.
  • Por último, llame a la función ScrollDC .
  • Vuelva a dibujar las partes transparentes invalidadas previamente de cualquier objeto superpuesto.
Independientemente del rectángulo de desplazamiento y recorte, solo se pintarán los píxeles contenidos en el rectángulo de sitio del objeto. El área descubierta por la operación de desplazamiento se invalida y vuelve a dibujar inmediatamente antes de que este método devuelva.

Todo el nuevo dibujo generado por este método debe producirse de forma sincrónica antes de que este método devuelva.

Este método debe ocultar automáticamente el símbolo de intercalación durante la operación de desplazamiento y debe mover el símbolo de intercalación por las cantidades de desplazamiento si está dentro del rectángulo de clip.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ocidl.h

Consulte también

IOleInPlaceSiteWindowless

IViewObjectEx::GetRect

IViewObjectEx::GetViewStatus