原文链接 -> 传送门
函数功能:
RedrawWindow 函数用于更新窗口客户区指定的矩形或区域。
API 函数原型:
注释:_In_ 说明该参数是输入的。
BOOL RedrawWindow(
_In_ HWND hWnd,
_In_ const RECT *lprcUpdate,
_In_ HRGN hrgnUpdate,
_In_ UINT flags
);
参数解析:
|
参数
|
含义
|
|
hWnd
|
1. 指向将被重绘的窗口的句柄
2. 如果该参数为 NULL,则更新桌面窗口
|
|
lprcUpdate
|
1. 指向 RECT 结构的指针,该结构包含更新矩形在设备单位上的坐标
2. 如果 hrgnUpdate 参数标志一个区域,则该参数将被忽略
|
|
hrgnUpdate
|
1. 指向更新区域的指针
2. 如果 hrgnUpdate 和 lprcUpdate 参数都为 NULL,则整个客户区将被添加到更新区域
|
|
flags
|
1. 一个或多个重绘标识
2. 该参数可以使窗口变得无效或者有效,控制重绘,以及控制 RedrawWindow 函数影响的窗口
3. 下列的标识用来使窗口无效:
|
标识(无效)
|
描述
|
|
RDW_ERASE
|
使得当窗口被重绘时,窗口接受一条 WM_ERASEBKGND 消息。RDW_INVALIDATE 标识必须同时被指定,否则 RDW_ERASE 无效
|
|
RDW_FRAME
|
使得任何与更新区域相交的非客户区域接受一条 WM_NCPAINT 消息。RDW_INVALIDATE 标识必须同时被指定,否则 RDW_FRAME 无效。WM_NCPAINT 消息通常在 RedrawWindow 函数的执行过程中不会被发送,除非指定了 RDW_UPDATENOW 或 RDW_ERASENOW
|
|
RDW_INTERNALPAINT
|
使得一条 WM_PAINT 消息被传递给窗口而不管窗口的任何部分是否有效
|
|
RDW_INVALIDATE
|
使 lprcUpdate 或 hrgnUpdate 参数无效(只有一个可能为非空)。如果都为 NULL,则整个窗口将无效
|
4. 下列标识用来使窗口有效:
|
标识(有效)
|
含义
|
|
RDW_NOERASE
|
取消所有挂起的 WM_ERASEBKGND 消息
|
|
RDW_NOFRAME
|
取消所有挂起的 WM_NCPAINT 消息。该标识必须与 RDW_VALIDATE 同时使用,并且通常与 RDW_NOCHILDREN 一同使用。应该小心使用 RDW_NOFRAME,因为它可能造成重绘的窗口部分区域绘制不正确
|
|
RDW_NOINTERNALPAINT
|
取消所有挂起的内部 WM_PAINT 消息。该标识不会影响从一个非空更新区域产生的 WM_PAINT 消息
|
|
RDW_VALIDATE
|
使 lprcUpdate 或 hrgnUpdate 有效(只有一个可能为非空)。如果都为 NULL,则整个窗口将有效。该标识不会影响内部 WM_PAINT 消息
|
5. 下列标识控制何时重绘。RedrawWindow 将不会重绘除非指定了这些标识中的某一个:
|
标识
|
含义
|
|
RDW_ERASENOW
|
如果有必要,在函数返回之前,会使受影响的窗口(通过 RDW_ALLCHILDREN 和 RDW_NOCHILDREN 标识指定)接收 WM_NCPAINT 和 WM_ERASEBKGND 消息。WM_PAINT 消息会在平常的时间被接受
|
|
RDW_UPDATENOW
|
如果有必要,在函数返回之前,会使受影响的窗口(通过 RDW_ALLCHILDREN 和 RDW_NOCHILDREN 标识指定)接收 WM_NCPAINT,WM_ERASEBKGND 和 WM_PAINT 消息
|
6. 默认情况下,RedrawWindow 函数影响的窗口取决于是否指定的窗口含有 WS_CLIPCHILDREN 风格。不含有 WS_CLIPCHILDREN 风格的子窗口不会被影响;非 WS_CLIPCHILDREN 窗口将递归的有效或者无效直到出现一个WS_CLIPCHILDREN 窗口。下列的标识控制 RedrawWindow 函数影响的窗口:
|
标识
|
描述
|
|
RDW_ALLCHILDREN
|
如果存在子窗口,重绘操作包括子窗口
|
|
RDW_NOCHILDREN
|
如果存在子窗口,重绘操作排除子窗口
|
|
返回值:
1. 如果窗口在此前已被禁用,则返回值为非 0;
2. 如果窗口在此前没有被禁用,则返回值为 0。
备注:
当 RedrawWindow 函数用来使桌面窗口的一部分无效,则桌面窗口不会接收 WM_PAINT 消息。应用程序可以使用 RDW_ERASE 标识来产生一条 WM_ERASEBKGND 消息来重绘桌面。
需求:
|
Minimum supported client
|
Windows 2000 专业版[桌面应用程序]
|
|
Minimum supported server
|
Windows 2000 服务器版 [桌面应用程序]
|
|
Header
|
Winuser.h(包含于 Windows.h)
|
|
Library
|
User32.lib
|
|
DLL
|
User32.dll
|