Compartir a través de


Contextos de dispositivo de visualización de clases

Mediante el uso de un contexto de dispositivo de clase, una aplicación puede usar un solo contexto de dispositivo para mostrar para cada ventana que pertenezca a una clase especificada. Los contextos de dispositivo de clase se suelen usar con ventanas de control que se dibujan con los mismos valores de atributo. Al igual que los contextos de dispositivo privado, los contextos de dispositivo de clase minimizan el tiempo necesario para preparar un contexto de dispositivo para dibujar.

El sistema proporciona un contexto de dispositivo de clase para una ventana si pertenece a una clase de ventana que tiene el estilo CS_CLASSDC. El sistema crea el contexto del dispositivo al crear la primera ventana que pertenece a la clase y, a continuación, usa el mismo contexto de dispositivo para todas las ventanas creadas posteriormente en la clase . Inicialmente, el contexto de dispositivo de clase tiene los mismos valores predeterminados para los atributos que un contexto de dispositivo común, pero la aplicación puede modificarlos en cualquier momento. El sistema conserva todos los cambios, excepto la región de recorte y el origen del dispositivo, hasta que se haya destruido la última ventana de la clase. Un cambio realizado para una ventana se aplica a todas las ventanas de esa clase.

Una aplicación puede recuperar el identificador en el contexto del dispositivo de clase mediante la función GetDC en cualquier momento después de crear la primera ventana. La aplicación puede mantener y usar el identificador sin liberarlo porque el contexto del dispositivo de clase no forma parte de la memoria caché del contexto del dispositivo para mostrar. Si la aplicación crea otra ventana en la misma clase de ventana, la aplicación debe recuperar de nuevo el contexto del dispositivo de clase. Al recuperar el contexto del dispositivo, se establece el origen del dispositivo correcto y la región de recorte para la nueva ventana. Una vez que la aplicación recupera el contexto del dispositivo de clase para una nueva ventana de la clase , el contexto del dispositivo ya no se puede usar para dibujar en la ventana original sin recuperarlo de nuevo para esa ventana. En general, cada vez que se debe dibujar en una ventana, una aplicación debe recuperar explícitamente el contexto del dispositivo de clase para la ventana.

Las aplicaciones que usan contextos de dispositivo de clase siempre deben llamar a BeginPaint al procesar un mensaje de WM_PAINT . La función establece el origen y la región de recorte del dispositivo correctos para la ventana e incorpora la región de actualización. La aplicación también debe llamar a EndPaint para restaurar el símbolo de intercalación si BeginPaint lo escondió. EndPaint no tiene ningún otro efecto en un contexto de dispositivo de clase.

El sistema pasa el contexto del dispositivo de clase al enviar el mensaje WM_ERASEBKGND a la aplicación, lo que permite que los valores de atributo actuales afecten a cualquier dibujo realizado por la aplicación o el sistema al procesar este mensaje. Como podría hacer que una ventana tenga un contexto de dispositivo privado, una aplicación puede usar GetDCEx para forzar al sistema a devolver un contexto de dispositivo común para la ventana que tiene un contexto de dispositivo de clase.

No se recomienda usar contextos de dispositivo de clase.