鱼C论坛

 找回密码
 立即注册
查看: 14394|回复: 13

[API档案] UpdateWindow

[复制链接]
发表于 2014-5-15 23:47:59 | 显示全部楼层 |阅读模式

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

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

x
函数功能:

UpdateWindow 函数绕过应用程序的消息队列,直接发送 WM_PAINT 消息给指定窗口的窗口过程。

如果窗口更新的区域不为空,UpdateWindow 函数通过发送一个 WM_PAINT 消息来更新指定窗口的客户区。如果更新区域为空,则不发送消息。


API 函数原型:

  1. BOOL UpdateWindow(
  2.   _In_  HWND hWnd
  3. );
复制代码


参数解析:

参数 含义
hWnd 指定要更新的窗口的句柄.


返回值:

1. 如果函数调用成功,返回值为非 0;

2. 如果函数调用不成功,返回值为 0。

【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-16 08:53:02 | 显示全部楼层
这些API档案是不是要记住啊?{:7_180:}

点评

不用啊,用到来查就行~  详情 回复 发表于 2014-5-16 17:34
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-5-16 17:34:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2014-5-23 23:33:31 | 显示全部楼层
话说,为什么我把update window 这个函数注释掉,程序没有什么反应呀,:cry:cry

点评

UpdateWindow 是直接发送 WM_PAINT 消息给窗口过程,注意,这里是直接发送,就是让窗口过程立即执行 WM_PAINT 的动作。(把断点下在 UpdateWindow 这里,这一句没有被执行的时候,并不会显示文字) 如果不是通过  详情 回复 发表于 2014-5-26 18:26
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-5-26 18:26:31 | 显示全部楼层
秦晓彬 发表于 2014-5-23 23:33
话说,为什么我把update window 这个函数注释掉,程序没有什么反应呀,

UpdateWindow 是直接发送 WM_PAINT 消息给窗口过程,注意,这里是直接发送,就是让窗口过程立即执行 WM_PAINT 的动作。(把断点下在 UpdateWindow 这里,这一句没有被执行的时候,并不会显示文字)

如果不是通过 UpdateWindow 来发送 WM_PAINT 消息,操作系统也会自动检测窗口是否需要重绘而将 WM_PAINT 消息投入消息队列(具体请看第四讲),但是投放到消息队列里的 WM_PAINT 消息是级别极低的,必须等到消息队列中所有的消息都执行完毕才会执行。

因此,如果屏蔽了 UpdateWindow,同时消息队列又一直有新消息,那么 WM_PAINT 就不会被调用到。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-26 20:27:32 | 显示全部楼层
小甲鱼 发表于 2014-5-26 18:26
UpdateWindow 是直接发送 WM_PAINT 消息给窗口过程,注意,这里是直接发送,就是让窗口过程立即执行 WM_P ...

嗯,受教了,弱弱的问一下,为什么我修改的程序不能发声呢,在createwm 里面使用playsound这个函数,应该可以发声的呀,

点评

winmm.lib 库有没有包含进去  详情 回复 发表于 2014-5-27 22:32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-27 22:32:19 | 显示全部楼层
秦晓彬 发表于 2014-5-26 20:27
嗯,受教了,弱弱的问一下,为什么我修改的程序不能发声呢,在createwm 里面使用playsound这个函数,应该 ...

winmm.lib 库有没有包含进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-30 19:57:34 | 显示全部楼层
:victory:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-15 18:49:31 | 显示全部楼层
为什么我的UpdateWindow函数不刷新页面啊?@小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-8 21:02:59 | 显示全部楼层
努力爬楼中,老师讲的真棒。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-20 08:54:18 | 显示全部楼层
受教了,太感谢分享了,没搞清的知识点终于搞清楚了,UpdateWindow没有执行,窗口过程函数中的WM_PAINT消息处理就没有调用,文字就显示不出来,一旦UpdateWindow调用,那么Windows就会发送非队列的WM_PAINT给窗口过程函数;如果不调用UpdateWindow,那么如果消息队列中有N个消息在处理,也就是需要很长时间才能看到文字显示出来。
同样道理,在动态绘图过程也是类似的,当数据更新后,就需要View也更新,需要系统发送WM_PAINT的消息到窗口过程函数,而不是一直等待。
那么又存在一个疑问:UpdateWindow和InvalidateRect都能使得Windows发送WM_PAINT到窗口过程,二者这方面有什么区别呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-20 12:04:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-15 09:43:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-1 18:23:07 | 显示全部楼层
小鱼这个网站可要一直存在啊,要是以后查参数发现不再了,就不好啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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