Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 |