Método IOleInPlaceSiteWindowless::GetDC (ocidl.h)
Fornece um objeto com um identificador para um contexto de dispositivo para uma tela ou dispositivo compatível de seu contêiner.
Sintaxe
HRESULT GetDC(
[in] LPCRECT pRect,
[in] DWORD grfFlags,
[out] HDC *phDC
);
Parâmetros
[in] pRect
Um ponteiro para o retângulo que o objeto deseja redesenhar, nas coordenadas do cliente da janela que contém. Se esse parâmetro for NULL, a extensão total do objeto será redesenhada.
[in] grfFlags
Uma combinação de valores da enumeração OLEDCFLAGS .
[out] phDC
Um ponteiro para um contexto de dispositivo retornado.
Retornar valor
Esse método retorna S_OK com êxito. Outros valores retornados possíveis incluem o seguinte.
Código de retorno | Descrição |
---|---|
|
O contêiner já está no meio de uma sessão de pintura. Ou seja, esse método já foi chamado e o método IOleInPlaceSiteWindowless::ReleaseDC ainda não foi chamado. |
Comentários
Um contexto de dispositivo obtido por esse método deve ser liberado chamando IOleInPlaceSiteWindowless::ReleaseDC.
Como outros métodos nessa interface, os retângulos são especificados nas coordenadas do cliente da janela que contém. Espera-se que o contêiner intersecione esse retângulo com o retângulo do site do objeto e recorte tudo fora do retângulo resultante. Isso impede que objetos desenham inadvertidamente onde eles não deveriam.
Os contêineres também devem mapear a origem do contexto do dispositivo para que o objeto possa desenhar as coordenadas do cliente da janela que contém, geralmente a janela do contêiner. Se o contêiner estiver apenas passando o contexto do dispositivo de janela, isso ocorrerá automaticamente. Se ele estiver retornando outro contexto de dispositivo, por exemplo, um contexto de dispositivo de memória fora da tela, a origem do visor deverá ser definida adequadamente.
Anotações aos implementadores
Dependendo se ele estiver retornando um contexto de dispositivo na tela ou fora da tela e dependendo de quão sofisticado ele é, o contêiner pode usar um dos seguintes algoritmos:-
Na tela, desenho de um passe
- No método IOleInPlaceSiteWindowless::GetDC , o contêiner deve:
- No método ReleaseDC , o contêiner deve:
- Desenhe o DVASPECT_CONTENT de cada objeto sobreposto.
- Libere o contexto do dispositivo.
-
Na tela, desenho de duas passões
- No método IOleInPlaceSiteWindowless::GetDC , o contêiner deve:
- Obter o contexto do dispositivo de janela.
- Recorte as regiões opacas de qualquer objeto sobreposto. Essas regiões não precisam ser redesenhadas, pois já estão corretas na tela.
- Se OLEDC_PAINTBKGND não estiver definido, retorne o contexto do dispositivo.
- Caso contrário, recorte as partes opacas do objeto solicitando o contexto do dispositivo e desenhe as partes opacas de cada objeto atrás dele indo de frente para trás.
- Desenhe os aspectos transparentes de cada objeto por trás da volta para a frente, definindo a região de recorte adequadamente a cada vez.
- Por fim, retorne o contexto do dispositivo.
- No método IOleInPlaceSiteWindowless::ReleaseDC , o contêiner deve:
- Desenhe as partes transparentes de cada objeto sobreposto.
- Libere o contexto do dispositivo.
- No método IOleInPlaceSiteWindowless::GetDC , o contêiner deve:
-
Desenho fora da tela
- No método IOleInPlaceSiteWindowless::GetDC , o contêiner deve:
- Crie um contexto de dispositivo de memória compatível com tela, contendo um bitmap compatível de tamanho apropriado.
- Mapeie a origem do visor do contexto do dispositivo para garantir que o objeto de chamada possa ser desenhado usando as coordenadas da área do cliente da janela que contém.
- Se OLEDC_PAINTBKGND estiver definido, desenhe o DVASPECT_CONTENT de cada objeto por trás do objeto de chamada.
- Retornar o contexto do dispositivo.
- No método IOleInPlaceSiteWindowless::ReleaseDC , o contêiner deve:
- Desenhe o aspecto DVASPECT_CONTENT de cada objeto sobreposto.
- Copie o bitmap fora da tela para a tela no local em que o objeto de chamada foi solicitado originalmente em IOleInPlaceSiteWindowless::GetDC.
- Exclua e solte o contexto do dispositivo de memória.
- No método IOleInPlaceSiteWindowless::GetDC , o contêiner deve:
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 |