An application sends the WM_PAINT message when Windows or another application
makes a request to paint a portion of an application's window. The message is
sent when the UpdateWindow
function is called, or by the DispatchMessage
function when the application obtains a WM_PAINT message by using the GetMessage
hdc = (HDC) wParam; // the device context to draw in
Identifies the device context to draw in. If this parameter is NULL, use the
default device context. This parameter is used by some common controls to enable
drawing in a device context other than the default device context. Other
windows can safely ignore this parameter.
An application should return zero if it processes this message.
function validates the update region. The function may also send the WM_NCPAINT
message to the window procedure if the window frame must be painted and send
message if the window background must be erased.
The system sends this message when there are no other messages in the
application's message queue. DispatchMessage
determines where to send the message; GetMessage
determines which message to dispatch. GetMessage
returns the WM_PAINT message when there are no other messages in the
application's message queue, and DispatchMessage
sends the message to the appropriate window procedure.
A window may receive internal paint messages as a result of calling RedrawWindow
with the RDW_INTERNALPAINT flag set. In this case, the window may not have an
update region. An application should call the GetUpdateRect
function to determine whether the window has an update region. If GetUpdateRect
returns zero, the application should not call the BeginPaint
An application must check for any necessary internal painting by looking at
its internal data structures for each WM_PAINT message, because a WM_PAINT
message may have been caused by both a non-NULL update region and a call to RedrawWindow
with the RDW_INTERNALPAINT flag set.
Windows sends an internal WM_PAINT message only once. After an internal
WM_PAINT message is returned from GetMessage
or is sent to a window by UpdateWindow
, Windows does not post or send further WM_PAINT messages until the window is
invalidated or until RedrawWindow
is called again with the RDW_INTERNALPAINT flag set.
For some common controls, the default WM_PAINT message processing checks the wParam
parameter. If wParam
is non-NULL, the control assumes that the value is an HDC and paints using
that device context.
- Software for developers
Software for Android Developers
- More information resources
Unix Manual Pages