Método IOleInPlaceSiteWindowless::GetDC (ocidl.h)
Proporciona a un objeto un identificador de un contexto de dispositivo para una pantalla o dispositivo compatible de su contenedor.
Sintaxis
HRESULT GetDC(
[in] LPCRECT pRect,
[in] DWORD grfFlags,
[out] HDC *phDC
);
Parámetros
[in] pRect
Puntero al rectángulo que el objeto quiere volver a dibujar, en coordenadas de cliente de la ventana contenedora. Si este parámetro es NULL, se vuelve a dibujar la extensión completa del objeto.
[in] grfFlags
Combinación de valores de la enumeración OLEDCFLAGS .
[out] phDC
Puntero a un contexto de dispositivo devuelto.
Valor devuelto
Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.
Código devuelto | Descripción |
---|---|
|
El contenedor ya está en medio de una sesión de pintura. Es decir, ya se ha llamado a este método y aún no se ha llamado al método IOleInPlaceSiteWindowless::ReleaseDC . |
Comentarios
Se debe liberar un contexto de dispositivo obtenido por este método llamando a IOleInPlaceSiteWindowless::ReleaseDC.
Al igual que otros métodos de esta interfaz, los rectángulos se especifican en las coordenadas de cliente de la ventana contenedora. Se espera que el contenedor intersece este rectángulo con el rectángulo de sitio del objeto y recorte todo lo que está fuera del rectángulo resultante. Esto evita que los objetos se dibujen inadvertidamente donde no deben.
También se espera que los contenedores asignen el origen del contexto del dispositivo para que el objeto pueda dibujar en coordenadas de cliente de la ventana contenedora, normalmente la ventana del contenedor. Si el contenedor simplemente pasa su contexto de dispositivo de ventana, esto se produce automáticamente. Si devuelve otro contexto de dispositivo, por ejemplo, un contexto de dispositivo de memoria fuera de la pantalla, el origen de la ventanilla debe establecerse correctamente.
Notas para los implementadores
Dependiendo de si devuelve un contexto de dispositivo en pantalla o fuera de pantalla y, en función de lo sofisticado que sea, el contenedor puede usar uno de los algoritmos siguientes:-
Dibujo de un paso en pantalla
- En el método IOleInPlaceSiteWindowless::GetDC , el contenedor debe:
- En el método ReleaseDC , el contenedor debe:
- Dibuje el DVASPECT_CONTENT de cada objeto superpuesto.
- Libere el contexto del dispositivo.
-
En pantalla, dibujo de dos pasos
- En el método IOleInPlaceSiteWindowless::GetDC , el contenedor debe:
- Obtenga el contexto del dispositivo de ventana.
- Recorte las regiones opacas de cualquier objeto superpuesto. Estas regiones no necesitan volver a dibujarse, ya que ya son correctas en la pantalla.
- Si no se establece OLEDC_PAINTBKGND, devuelva el contexto del dispositivo.
- De lo contrario, recorte las partes opacas del objeto que solicitan el contexto del dispositivo y dibuje las partes opacas de cada objeto detrás de él hacia delante hacia atrás.
- Dibuje los aspectos transparentes de cada objeto detrás de volver al frente, estableciendo la región de recorte de forma adecuada cada vez.
- Por último, devuelve el contexto del dispositivo.
- En el método IOleInPlaceSiteWindowless::ReleaseDC , el contenedor debe:
- Dibuje las partes transparentes de cada objeto superpuesto.
- Libere el contexto del dispositivo.
- En el método IOleInPlaceSiteWindowless::GetDC , el contenedor debe:
-
Dibujo fuera de pantalla
- En el método IOleInPlaceSiteWindowless::GetDC , el contenedor debe:
- Cree un contexto de dispositivo de memoria compatible con pantalla que contenga un mapa de bits compatible con el tamaño adecuado.
- Asigne el origen de la ventanilla del contexto del dispositivo para asegurarse de que el objeto que realiza la llamada puede dibujar mediante coordenadas de área de cliente de la ventana contenedora.
- Si se establece OLEDC_PAINTBKGND, dibuje el DVASPECT_CONTENT de cada objeto detrás del objeto que realiza la llamada.
- Devuelve el contexto del dispositivo.
- En el método IOleInPlaceSiteWindowless::ReleaseDC , el contenedor debe:
- Dibuje el aspecto DVASPECT_CONTENT de cada objeto superpuesto.
- Copie el mapa de bits fuera de la pantalla en la ubicación que el objeto de llamada solicitó originalmente en IOleInPlaceSiteWindowless::GetDC.
- Elimine y libere el contexto del dispositivo de memoria.
- En el método IOleInPlaceSiteWindowless::GetDC , el contenedor debe:
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 |