winuser.h

Mensaje WM_PAINT

Definición

WM_PAINT

Una aplicación envía un mensaje WM_PAINT cuando Windows u otra aplicación hace una petición para pintar una porción de la ventana de la aplicación. El mensaje es enviado cuando las funciones UpdateWindow o RedrawWindow son llamadas o por la función DispatchMessage cuando la aplicación obtiene un mensaje WM_PAINT tras el uso de las funciones GetMessage o PeekMessage.

Descripción

Este mensaje no tiene parámetros.

Valor de retorno

Una aplicación debe retornar con cero si procesa este mensaje.

Acción por defecto

La función DefWindowProc valida la región a actualizar. La función también enviará un mensaje WM_NCPAINT al procedimiento de ventana si el marco de la ventana ha de ser pintado y envía un mensaje WM_ERASEBKGND si el fondo de la ventana debe ser borrado.

Observaciones

El sistema envía este mensaje cuando no hay ningún otro mensaje en la cola de la aplicación. DispatchMessage determina a dónde enviar el mensaje; GetMessage determina el mensaje a procesar. GetMessage vuelve con el mensaje WM_PAINT cuando no hay otros mensajes en la cola de la aplicación, y DispatchMessage envía el mensaje al procedimiento de ventana adecuado.

Una ventana recibirá mensajes de pintar internos como resultado de llamadas a RedrawWindow con el flag RDW_INTERNALPAINT activo. En este caso, la ventana no tendrá una región de actualización. La aplicación deberá llamar a la función GetUpdateRect para determinar si la ventana tiene una región a actualizar. Si GetUpdateRect retorna con cero, la aplicación no debería llamar a las funciones BeginPaint y EndPaint.

Una aplicación debe comprobar internamente si es necesario que se pinte consultando sus estructuras de datos internas para cada mensaje WM_PAINT, ya que un mensaje WM_PAINT puede ser causado tanto con una región de actualización no nula como por una llamada a la función RedrawWindow con el flag RDW_INTERNALPAINT activo.

Windows envía internamente un mensaje WM_PAINT sólo una vez. Después, se devuelve un mensaje interno WM_PAINT desde GetMessage o PeekMessage o se envía a la ventana mediante UpdateWindow, Windows no envía ni cursa más mensajes WM_PAINT hasta que la ventana no sea invalidada o hasta que RedrawWindow sea llamada de nuevo con el flag RDW_INTERNALPAINT activo.