Compartir a través de


Cuándo dibujar en una ventana

Una aplicación dibuja en una ventana en una variedad de veces: al crear una ventana por primera vez, al cambiar el tamaño de la ventana, al mover la ventana desde detrás de otra, al minimizar o maximizar la ventana, al mostrar datos de un archivo abierto y al desplazarse, cambiar o seleccionar una parte de los datos mostrados.

El sistema administra acciones como mover y cambiar el tamaño de una ventana. Si una acción afecta al contenido de la ventana, el sistema marca la parte afectada de la ventana como lista para actualizarse y, en la siguiente oportunidad, envía un mensaje WM_PAINT al procedimiento de ventana de la ventana. El mensaje es una señal para la aplicación para determinar qué se debe actualizar y para llevar a cabo el dibujo necesario.

La aplicación administra algunas acciones, como mostrar archivos abiertos y seleccionar datos mostrados. Para estas acciones, una aplicación puede marcar para actualizar la parte de la ventana afectada por la acción, lo que hace que se envíe un mensaje WM_PAINT en la próxima oportunidad. Si una acción requiere comentarios inmediatos, la aplicación puede dibujar mientras se realiza la acción, sin esperar a WM_PAINT. Por ejemplo, una aplicación típica resalta el área que el usuario selecciona en lugar de esperar al siguiente mensaje de WM_PAINT actualizar el área.

En todos los casos, una aplicación puede dibujar en una ventana en cuanto se crea. Para dibujar en la ventana, la aplicación debe recuperar primero un identificador en un contexto de dispositivo para mostrar para la ventana. Idealmente, una aplicación lleva a cabo la mayoría de sus operaciones de dibujo durante el procesamiento de WM_PAINT mensajes. En este caso, la aplicación recupera un contexto de dispositivo para mostrar llamando a la función BeginPaint . Si una aplicación dibuja en cualquier otro momento, como desde WinMain o durante el procesamiento de mensajes de teclado o mouse, llama a la función GetDC o GetDCEx para recuperar el controlador de dominio de pantalla.