描述
RedrawWindow功能可更新窗口客户区中指定的矩形或区域。
C++ 语法
BOOL RedrawWindow( __in HWND hWnd, __in const RECT *lprcUpdate, __in HRGN hrgnUpdate, __in UINT flags ); |
PowerBASIC 语法
FUNCTION RedrawWindow ( _ BYVAL hWnd AS DWORD, _ BYREF lprcUpdate AS RECT, _ BYVAL hrgnUpdate AS DWORD, _ BYVAL flags AS DWORD _ ) AS LONG |
参数
hWnd
[in]处理窗口以重新绘制。如果此参数为NULL,则会更新桌面窗口。
lprcUpdate
[in]指向RECT结构的指针,其中包含更新矩形的以设备为单位的坐标。如果hrgnUpdate参数标识一个区域,则忽略该参数。
hrgnUpdate
[in]处理更新区域。如果hrgnUpdate和lprcUpdate参数都为NULL,则将整个客户机区域添加到更新区域。
flags
[in]指定一个或多个重绘标志。此参数可用于使窗口无效或验证,控制重新绘制,并控制哪些窗口受RedrawWindow的影响。
以下标志用于使窗口无效。
标志(无效) |
描述 |
RDW_ERASE |
当窗口被重新绘制时,使窗口接收到WM_ERASEBKGND消息。还必须指定RDW_INVALIDATE标志;否则,RDW_ERASE不起作用。en |
RDW_FRAME |
导致与更新区域相交的窗口的非客户区域的任何部分接收WM_NCPAINT消息。还必须指定RDW_INVALIDATE标志;否则,RDW_FRAME无效。enWM_NCPAINT消息通常不会在执行RedrawWindow期间发送,除非指定了RDW_UPDATENOW或RDW_ERASENOW。 |
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邮件。此标志不影响非NULL更新区域的WM_PAINT消息。 |
RDW_VALIDATE |
验证lprcUpdate或hrgnUpdate(只有一个可能是非NULL)。如果两者均为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 |
从重画操作中排除子窗口(如果有的话)。 |
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。
备注
当RedrawWindow用于使部分桌面窗口无效时,桌面窗口不会收到WM_PAINT消息。要重新绘制桌面,应用程序使用RDW_ERASE标志来生成WM_ERASEBKGND消息。
引用文件 #INCLUDE Once
WinUser.inc(包括Windows.inc)


