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.