RedrawWindow 函数 (winuser.h)
RedrawWindow 函数更新窗口工作区中的指定矩形或区域。
语法
BOOL RedrawWindow(
[in] HWND hWnd,
[in] const RECT *lprcUpdate,
[in] HRGN hrgnUpdate,
[in] UINT flags
);
参数
[in] hWnd
要重绘的窗口的句柄。 如果此参数为 NULL,则更新桌面窗口。
[in] lprcUpdate
指向 RECT 结构的指针,该结构包含更新矩形的坐标(以设备单位为单位)。 如果 hrgnUpdate 参数标识区域,则忽略此参数。
[in] hrgnUpdate
更新区域的句柄。 如果 hrgnUpdate 和 lprcUpdate 参数均为 NULL,则整个工作区将添加到更新区域。
[in] flags
一个或多个重绘标志。 此参数可用于使窗口失效或验证、控件重新绘制以及控制受 RedrawWindow 影响的窗口。
以下标志用于使窗口失效。
标记 (失效) | 说明 |
---|---|
|
使窗口在重新绘制时收到 WM_ERASEBKGND 消息。 还必须指定RDW_INVALIDATE标志;否则,RDW_ERASE无效。 |
|
导致与更新区域相交的窗口非工作区的任何部分接收 WM_NCPAINT 消息。 还必须指定RDW_INVALIDATE标志;否则,RDW_FRAME无效。 除非指定 了RDW_UPDATENOW 或RDW_ERASENOW,否则在执行 RedrawWindow 期间通常不会发送WM_NCPAINT消息。 |
|
导致 WM_PAINT 消息发布到窗口,而不管窗口的任何部分是否无效。 |
|
使 lprcUpdate 或 hrgnUpdate 失效 (只有一个可以是非 NULL) 。 如果两者均为 NULL,则整个窗口无效。 |
以下标志用于验证窗口。
标记 (验证) | 说明 |
---|---|
|
禁止显示任何挂起 WM_ERASEBKGND 消息。 |
|
禁止显示任何挂起 WM_NCPAINT 消息。 此标志必须与 RDW_VALIDATE 一起使用,并且通常与 RDW_NOCHILDREN 一起使用。 应谨慎使用RDW_NOFRAME,因为它可能会导致窗口的某些部分被不当绘制。 |
|
禁止任何挂起的内部 WM_PAINT 消息。 此标志不会影响由非 NULL 更新区域生成的WM_PAINT消息。 |
|
验证 lprcUpdate 或 hrgnUpdate (只有一个可以是非 NULL) 。 如果两者均为 NULL,则验证整个窗口。 此标志不会影响内部 WM_PAINT 消息。 |
以下标志控制何时发生重绘。 除非指定其中一个标志,否则 RedrawWindow 不会重新绘制。
标志 | 描述 |
---|---|
|
使受影响的窗口 (RDW_ALLCHILDREN和RDW_NOCHILDREN标志) 接收 WM_NCPAINT ,并在函数返回之前 接收WM_ERASEBKGND 消息(如有必要)。 WM_PAINT 消息在正常时间接收。 |
|
使受RDW_ALLCHILDREN和RDW_NOCHILDREN标志指定的受影响的窗口 (,) 在函数返回之前接收 WM_NCPAINT、 WM_ERASEBKGND和 WM_PAINT 消息(如有必要)。 |
默认情况下,受 RedrawWindow 影响的窗口取决于指定的窗口是否具有WS_CLIPCHILDREN样式。 不是WS_CLIPCHILDREN样式的子窗口不受影响;非WS_CLIPCHILDREN窗口以递归方式验证或失效,直到遇到WS_CLIPCHILDREN窗口。 以下标志控制哪些窗口受 RedrawWindow 函数的影响。
标志 | 描述 |
---|---|
|
在重绘操作中包括子窗口(如果有)。 |
|
从重绘操作中排除子窗口(如果有)。 |
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。
注解
使用 RedrawWindow 使部分桌面窗口失效时,桌面窗口不会收到 WM_PAINT 消息。 为了重新绘制桌面,应用程序使用 RDW_ERASE 标志生成 WM_ERASEBKGND 消息。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
API 集 | windows 8 中引入的 ext-ms-win-ntuser-draw-l1-1-0 () |