The RedrawWindow function updates the specified rectangle or region in a window's client area.
BOOL RedrawWindow(
HWND hWnd, // handle of window
CONST RECT *lprcUpdate,
// address of structure with update rectangle
HRGN hrgnUpdate, // handle of update region
UINT flags // array of redraw flags
);
The following flags are used to invalidate the window:
Flag (invalidation) | Description |
---|---|
RDW_ERASE | Causes the window to receive a WM_ERASEBKGND message when the window is repainted. The RDW_INVALIDATE flag must also be specified; otherwise, RDW_ERASE has no effect. |
RDW_FRAME | Causes any part of the nonclient area of the window that intersects the update region to receive a WM_NCPAINT message. The RDW_INVALIDATE flag must also be specified; otherwise, RDW_FRAME has no effect. The WM_NCPAINT message is typically not sent during the execution of RedrawWindow unless either RDW_UPDATENOW or RDW_ERASENOW is specified. |
RDW_INTERNALPAINT | Causes a WM_PAINT message to be posted to the window regardless of whether any portion of the window is invalid. |
RDW_INVALIDATE | Invalidates lprcUpdate or hrgnUpdate (only one may be non-NULL). If both are NULL, the entire window is invalidated. |
The following flags are used to validate the window:
Flag (validation) | Description |
---|---|
RDW_NOERASE | Suppresses any pending WM_ERASEBKGND messages. |
RDW_NOFRAME | Suppresses any pending WM_NCPAINT messages. This flag must be used with RDW_VALIDATE and is typically used with RDW_NOCHILDREN. RDW_NOFRAME should be used with care, as it could cause parts of a window to be painted improperly. |
RDW_NOINTERNALPAINT | Suppresses any pending internal WM_PAINT messages. This flag does not affect WM_PAINT messages resulting from a non-NULL update area. |
RDW_VALIDATE | Validates lprcUpdate or hrgnUpdate (only one may be non-NULL). If both are NULL, the entire window is validated. This flag does not affect internal WM_PAINT messages. |
The following flags control when repainting occurs. RedrawWindow will not repaint unless one of these flags is specified.
Flag | Description |
---|---|
RDW_ERASENOW | Causes the affected windows (as specified by the RDW_ALLCHILDREN and RDW_NOCHILDREN flags) to receive WM_NCPAINT and WM_ERASEBKGND messages, if necessary, before the function returns. WM_PAINT messages are received at the ordinary time. |
RDW_UPDATENOW | Causes the affected windows (as specified by the RDW_ALLCHILDREN and RDW_NOCHILDREN flags) to receive WM_NCPAINT, WM_ERASEBKGND, and WM_PAINT messages, if necessary, before the function returns. |
By default, the windows affected by RedrawWindow depend on whether the given window has the WS_CLIPCHILDREN style. Child windows that are not the WS_CLIPCHILDREN style are unaffected; non-WS_CLIPCHILDREN windows are recursively validated or invalidated until a WS_CLIPCHILDREN window is encountered. The following flags control which windows are affected by the RedrawWindow function:
Flag | Description |
---|---|
RDW_ALLCHILDREN | Includes child windows, if any, in the repainting operation. |
RDW_NOCHILDREN | Excludes child windows, if any, from the repainting operation. |
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.
Windows NT: To get extended error information, call GetLastError.
When RedrawWindow is used to invalidate part of the desktop window, the desktop window does not receive a WM_PAINT message. To repaint the desktop, an application uses the RDW_ERASE flag to generate a WM_ERASEBKGND message.
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in winuser.h.
Import Library: Use user32.lib.
Painting and Drawing Overview, Painting and Drawing Functions, GetUpdateRect, GetUpdateRgn, InvalidateRect, InvalidateRgn, RECT, UpdateWindow