Mostrar contextos de dispositivo

Una aplicación obtiene un controlador de dominio para mostrar llamando a la función BeginPaint, GetDC o GetDCEx e identificando la ventana en la que aparecerá la salida correspondiente. Normalmente, una aplicación obtiene un controlador de dominio para mostrar solo cuando debe dibujar en el área cliente. Sin embargo, puede obtener un contexto de dispositivo de ventana llamando a la función GetWindowDC . Cuando la aplicación haya terminado de dibujar, debe liberar el controlador de dominio llamando a la función EndPaint o ReleaseDC .

Hay cinco tipos de controladores de dominio para las pantallas de vídeo:

  • Clase
  • Comunes
  • Privados
  • Periodo
  • Parent

Contextos de dispositivo de clase

Los contextos de dispositivo de clase son compatibles estrictamente con versiones de 16 bits de Windows. Al escribir la aplicación, evite usar el contexto del dispositivo de clase; en su lugar, use un contexto de dispositivo privado.

Contextos comunes de dispositivo

Los contextos de dispositivo comunes se muestran los controladores de dominio mantenidos en una memoria caché especial por el sistema. Los contextos de dispositivo comunes se usan en aplicaciones que realizan operaciones de dibujo poco frecuentes. Antes de que el sistema devuelva el identificador de controlador de dominio, inicializa el contexto de dispositivo común con los objetos, atributos y modos predeterminados. Las operaciones de dibujo realizadas por la aplicación usan estos valores predeterminados a menos que se llame a una de las funciones GDI para seleccionar un nuevo objeto, cambiar los atributos de un objeto existente o seleccionar un nuevo modo.

Dado que solo existe un número limitado de contextos de dispositivo comunes, una aplicación debe liberarlos después de que haya terminado de dibujar. Cuando la aplicación libera un contexto de dispositivo común, se pierden los cambios en los datos predeterminados.

Contextos de dispositivo privado

Los contextos de dispositivo privado son controladores de dominio que, a diferencia de los contextos comunes del dispositivo, conservan los cambios en los datos predeterminados incluso después de que una aplicación los libere. Los contextos de dispositivo privado se usan en aplicaciones que realizan numerosas operaciones de dibujo, como aplicaciones de diseño asistido por ordenador (CAD), aplicaciones de publicación de escritorio, aplicaciones de dibujo y pintura, etc. Los contextos de dispositivo privado no forman parte de la caché del sistema y, por tanto, no se deben liberar después de su uso. El sistema quita automáticamente un contexto de dispositivo privado después de que se haya destruido la última ventana de esa clase.

Una aplicación crea un contexto de dispositivo privado especificando primero el estilo de clase de ventana CS_OWNDC cuando inicializa el miembro de estilo de la estructura WNDCLASS y llama a la función RegisterClass . (Para obtener más información sobre las clases de ventana, vea Clases de ventana).

Después de crear una ventana con el estilo CS_OWNDC, una aplicación puede llamar a la función GetDC, GetDCEx o BeginPaint una vez para obtener un identificador que identifique un contexto de dispositivo privado. La aplicación puede seguir usando este identificador (y el controlador de dominio asociado) hasta que elimine la ventana creada con esta clase. El sistema conserva los cambios en los objetos gráficos y sus atributos, o los modos gráficos hasta que se elimina la ventana.

Contextos de dispositivo de ventana

Un contexto de dispositivo de ventana permite a una aplicación dibujar en cualquier lugar de una ventana, incluido el área no cliente. Normalmente, las aplicaciones que procesan los mensajes de WM_NCPAINT y WM_NCACTIVATE para ventanas con áreas no cliente personalizadas usan contextos de dispositivo de ventanas. No se recomienda usar un contexto de dispositivo de ventana para ningún otro propósito. Para obtener más información; consulte GetWindowDC.

Contextos de dispositivo primarios

Un contexto de dispositivo primario permite a una aplicación minimizar el tiempo necesario para configurar la región de recorte de una ventana. Normalmente, una aplicación usa contextos de dispositivo primarios para acelerar el dibujo de ventanas de control sin necesidad de un contexto de dispositivo privado o de clase. Por ejemplo, el sistema usa contextos de dispositivo primarios para los controles de botón de inserción y edición. Los contextos de dispositivo primarios están diseñados para su uso solo con ventanas secundarias, nunca con ventanas emergentes o de nivel superior. Para obtener más información; consulte Contextos de dispositivo de visualización primarios.