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

Permite que um objeto role uma área dentro de sua imagem ativa in-loco na tela.

Sintaxe

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

Parâmetros

[in] dx

A quantidade para rolar o eixo x.

[in] dy

A quantidade para rolar o eixo y.

[in] pRectScroll

O retângulo a ser rolado, nas coordenadas do cliente da janela que contém. Um valor nulo indica o objeto completo.

[in] pRectClip

O retângulo a ser retângulo a ser recortar. Somente pixels rolando para esse retângulo são desenhados. Pixels rolando para fora não são. Se esse parâmetro for NULL, o retângulo não será recortado.

Retornar valor

Esse método retorna S_OK com êxito.

Comentários

Esse método deve levar em conta o fato de que o chamador pode ser transparente e que pode haver objetos sobrepostos opacos ou transparentes. Consulte Observações aos implementadores abaixo para obter sugestões sobre algoritmos que esse método pode usar.

Anotações aos implementadores

Os contêineres podem implementar esse método de várias maneiras. No entanto, todos eles devem considerar a possibilidade de que o objeto que solicita a rolagem possa ser transparente ou não ter uma tela de fundo sólida. Os contêineres também devem levar em conta que pode haver objetos sobrepostos.

A maneira mais simples de implementar esse método consiste em simplesmente redesenhar o retângulo para rolar.

Um refinamento adicional a essa implementação simples é usar a função ScrollDC quando o objeto que solicita a rolagem é opaco, o objeto tem uma tela de fundo sólida e não há objetos sobrepostos.

Implementações mais sofisticadas podem usar o seguinte procedimento:

  • Verifique se o objeto é opaco e tem uma tela de fundo sólida, usando IViewObjectEx::GetViewStatus. Caso contrário, simplesmente invalide o retângulo para rolar. Um refinamento adicional é marcar se o retângulo de rolagem está inteiramente na região opaca de um objeto parcialmente transparente.
  • Obter o contexto do dispositivo de janela.
  • Recorte as partes opacas de qualquer objeto sobreposto retornado por IViewObjectEx::GetRect.
  • Por fim, chame a função ScrollDC .
  • Redesenhe as partes transparentes invalidadas anteriormente de qualquer objeto sobreposto.
Independentemente do retângulo de rolagem e recorte, somente pixels contidos no retângulo do site do objeto serão pintados. A área descoberta pela operação de rolagem é invalidada e redesenhada imediatamente, antes que esse método retorne.

Todas as redesenhos geradas por esse método devem ocorrer de forma síncrona antes que esse método retorne.

Esse método deve ocultar automaticamente o cursor durante a operação de rolagem e deve mover o cursor pelos valores de rolagem se ele estiver dentro do retângulo de clipe.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ocidl.h

Confira também

Ioleinplacesitewindowless

IViewObjectEx::GetRect

IViewObjectEx::GetViewStatus