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

更新区域的句柄。 如果 hrgnUpdatelprcUpdate 参数均为 NULL,则整个工作区将添加到更新区域。

[in] flags

一个或多个重绘标志。 此参数可用于使窗口失效或验证、控件重新绘制以及控制受 RedrawWindow 影响的窗口。

以下标志用于使窗口失效。

标记 (失效) 说明
RDW_ERASE
使窗口在重新绘制时收到 WM_ERASEBKGND 消息。 还必须指定RDW_INVALIDATE标志;否则,RDW_ERASE无效。
RDW_FRAME
导致与更新区域相交的窗口非工作区的任何部分接收 WM_NCPAINT 消息。 还必须指定RDW_INVALIDATE标志;否则,RDW_FRAME无效。 除非指定 了RDW_UPDATENOW 或RDW_ERASENOW,否则在执行 RedrawWindow 期间通常不会发送WM_NCPAINT消息。
RDW_INTERNALPAINT
导致 WM_PAINT 消息发布到窗口,而不管窗口的任何部分是否无效。
RDW_INVALIDATE
使 lprcUpdatehrgnUpdate 失效 (只有一个可以是非 NULL) 。 如果两者均为 NULL,则整个窗口无效。
 

以下标志用于验证窗口。

标记 (验证) 说明
RDW_NOERASE
禁止显示任何挂起 WM_ERASEBKGND 消息。
RDW_NOFRAME
禁止显示任何挂起 WM_NCPAINT 消息。 此标志必须与 RDW_VALIDATE 一起使用,并且通常与 RDW_NOCHILDREN 一起使用。 应谨慎使用RDW_NOFRAME,因为它可能会导致窗口的某些部分被不当绘制。
RDW_NOINTERNALPAINT
禁止任何挂起的内部 WM_PAINT 消息。 此标志不会影响由非 NULL 更新区域生成的WM_PAINT消息。
RDW_VALIDATE
验证 lprcUpdatehrgnUpdate (只有一个可以是非 NULL) 。 如果两者均为 NULL,则验证整个窗口。 此标志不会影响内部 WM_PAINT 消息。
 

以下标志控制何时发生重绘。 除非指定其中一个标志,否则 RedrawWindow 不会重新绘制。

标志 描述
RDW_ERASENOW
使受影响的窗口 (RDW_ALLCHILDREN和RDW_NOCHILDREN标志) 接收 WM_NCPAINT ,并在函数返回之前 接收WM_ERASEBKGND 消息(如有必要)。 WM_PAINT 消息在正常时间接收。
RDW_UPDATENOW
使受RDW_ALLCHILDREN和RDW_NOCHILDREN标志指定的受影响的窗口 (,) 在函数返回之前接收 WM_NCPAINTWM_ERASEBKGNDWM_PAINT 消息(如有必要)。
 

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

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

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。

注解

使用 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 ()

另请参阅

GetUpdateRect

GetUpdateRgn

InvalidateRect

InvalidateRgn

绘制和绘制函数

绘画和绘图概述

矩形

UpdateWindow