RedrawWindow

【勇芳软件工作室】汉化HomePreviousNext

RedrawWindow功能可更新窗口客户区中指定的矩形或区域。

BOOL RedrawWindow(

HWND 【的hWnd】,//窗口的句柄
CONST RECT *【lprcUpdate】,//具有更新矩形的结构的地址
HRGN 【hrgnUpdate】,//更新区域的句柄
UINT 【旗】//重绘标志数组
); 

参数

【的hWnd】

标识要重绘的窗口。如果此参数为NULL,则会更新桌面窗口。

【lprcUpdate】

指向包含更新矩形坐标的RECT结构。如果【hrgnUpdate】参数标识一个区域,则忽略该参数。

【hrgnUpdate】

标识更新区域。如果【hrgnUpdate】【lprcUpdate】参数都为NULL,则将整个客户机区域添加到更新区域。

【旗】

指定一个或多个重绘标志。该参数可以是使窗口无效或验证,控制重绘以及控制哪些窗口受RedrawWindow影响的标志的组合。

以下标志用于使窗口无效:

标志(无效)描述
RDW_ERASE当窗口重新绘制时,使窗口接收到WM_ERASEBKGND消息。还必须指定RDW_INVALIDATE标志;否则,RDW_ERASE不起作用。en
RDW_FRAME导致与更新区域相交的窗口的非客户区域的任何部分接收WM_NCPAINT消息。还必须指定RDW_INVALIDATE标志;否则,RDW_FRAME无效。en除非指定了RDW_UPDATENOW或RDW_ERASENOW,否则WM_NCPAINT消息通常不会在执行RedrawWindow期间发送。
RDW_INTERNALPAINT导致WM_PAINT消息被发布到窗口,而不管窗口的任何部分是否无效。
RDW_INVALIDATE无效【lprcUpdate】【hrgnUpdate】(只有一个可能不为空)。如果两者均为NULL,则整个窗口无效。

以下标志用于验证窗口:

标志(验证)描述
RDW_NOERASE禁止任何待处理的WM_ERASEBKGND消息。
RDW_NOFRAME禁止任何挂起的WM_NCPAINT消息。此标志必须与RDW_VALIDATE一起使用,通常与RDW_NOCHILDREN一起使用。en应谨慎使用RDW_NOFRAME,因为它可能会导致部分窗口被不正确地绘制。
RDW_NOINTERNALPAINT禁止任何挂起的内部WM_PAINT消息。此标志不影响由非空更新区域产生的WM_PAINT消息。
RDW_VALIDATE验证【lprcUpdate】【hrgnUpdate】(只有一个可能不为空)。如果两者均为NULL,则整个窗口都将被验证。此标志不影响内部WM_PAINT消息。

重绘时,以下标志控制。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消息(如有必要)。

默认情况下,受RedrawWindow影响的窗口取决于给定窗口是否具有WS_CLIPCHILDREN样式。不是WS_CLIPCHILDREN样式的子窗口不受影响;非WS_CLIPCHILDREN窗口被递归验证或无效,直到遇到WS_CLIPCHILDREN窗口。以下标志控制哪些窗口受RedrawWindow功能的影响:

描述
RDW_ALLCHILDREN在重绘操作中包括子窗口(如果有的话)。
RDW_NOCHILDREN从重画操作中排除子窗口(如果有的话)。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

RedrawWindow用于使部分桌面窗口无效时,桌面窗口不会收到WM_PAINT消息。要重新绘制桌面,应用程序使用RDW_ERASE标志生成WM_ERASEBKGND消息。

也可以看看

GetUpdateRect, GetUpdateRgn, InvalidateRect, InvalidateRgn, RECT, UpdateWindow