鱼C论坛

 找回密码
 立即注册
查看: 3637|回复: 0

[API档案] RedrawWindow

[复制链接]
发表于 2016-5-23 11:56:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
注:本文档由 Diu 翻译,小甲鱼校对。

原文链接 -> 传送门

函数功能:

RedrawWindow 函数用于更新窗口客户区指定的矩形或区域。


API 函数原型:

注释:_In_ 说明该参数是输入的。
BOOL RedrawWindow(
  _In_       HWND hWnd,
  _In_ const RECT *lprcUpdate,
  _In_       HRGN hrgnUpdate,
  _In_       UINT flags
);

参数解析:

参数 含义
hWnd1. 指向将被重绘的窗口的句柄

2. 如果该参数为 NULL,则更新桌面窗口
lprcUpdate1. 指向 RECT 结构的指针,该结构包含更新矩形在设备单位上的坐标

2. 如果 hrgnUpdate 参数标志一个区域,则该参数将被忽略
hrgnUpdate1. 指向更新区域的指针

2. 如果 hrgnUpdate 和 lprcUpdate 参数都为 NULL,则整个客户区将被添加到更新区域
flags1. 一个或多个重绘标识

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_NCPAINTWM_ERASEBKGND 消息。WM_PAINT 消息会在平常的时间被接受
RDW_UPDATENOW 如果有必要,在函数返回之前,会使受影响的窗口(通过 RDW_ALLCHILDREN 和 RDW_NOCHILDREN 标识指定)接收 WM_NCPAINTWM_ERASEBKGNDWM_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


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 01:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表