Synchronous and Asynchronous Drawing
Most drawing carried out during processing of the
WM_PAINT message is asynchronous; that is, there is a delay between the time a portion
of the window is invalidated and the time WM_PAINT is sent. During the delay,
the application typically retrieves messages from the queue and carries out
other tasks. The reason for the delay is that Windows generally treats drawing in
a window as a low-priority operation and works as though user-input messages
and messages that may affect the position or size of a window will be processed
before WM_PAINT.
In some cases, it is necessary for an application to draw synchronously
that is, draw in the window immediately after invalidating a portion of the
window. A typical application draws its main window immediately after creating
the window to signal the user that the application has started successfully.
Windows draws some control windows synchronously, such as buttons, because such
windows serve as the focus for user input. Although any window with a simple
drawing routine can be drawn synchronously, all such drawing should be done quickly
and should not interfere with the application's ability to respond to user
input.
The
UpdateWindow and
RedrawWindow functions allow for synchronous drawing.
UpdateWindow sends a WM_PAINT message directly to the window if the update region is not
empty.
RedrawWindow also sends a WM_PAINT message, but gives the application greater control over
how to draw the window, such as whether to draw the nonclient area and window
background or whether to send the message regardless of whether the update
region is empty. These functions send the WM_PAINT message directly to the window,
regardless of the number of other messages in the application message queue.
Any window requiring time-consuming drawing operations should be drawn
asynchronously to prevent pending messages from being blocked as the window is drawn.
Also, any application that frequently invalidates small portions of a window
should allow these invalid portions to consolidate into a single asynchronous
WM_PAINT message, rather than a series of synchronous WM_PAINT messages.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database