UpdateWindow
函数功能:UpdateWindow 函数绕过应用程序的消息队列,直接发送 WM_PAINT 消息给指定窗口的窗口过程。
如果窗口更新的区域不为空,UpdateWindow 函数通过发送一个 WM_PAINT 消息来更新指定窗口的客户区。如果更新区域为空,则不发送消息。
API 函数原型:
BOOL UpdateWindow(
_In_HWND hWnd
);
参数解析:
参数 含义
hWnd 指定要更新的窗口的句柄.
返回值:
1. 如果函数调用成功,返回值为非 0;
2. 如果函数调用不成功,返回值为 0。
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
WinSDK 这些API档案是不是要记住啊?{:7_180:} E=MC2 发表于 2014-5-16 08:53 static/image/common/back.gif
这些API档案是不是要记住啊?
不用啊,用到来查就行~ 话说,为什么我把update window 这个函数注释掉,程序没有什么反应呀,:cry:cry 秦晓彬 发表于 2014-5-23 23:33 static/image/common/back.gif
话说,为什么我把update window 这个函数注释掉,程序没有什么反应呀,
UpdateWindow 是直接发送 WM_PAINT 消息给窗口过程,注意,这里是直接发送,就是让窗口过程立即执行 WM_PAINT 的动作。(把断点下在 UpdateWindow 这里,这一句没有被执行的时候,并不会显示文字)
如果不是通过 UpdateWindow 来发送 WM_PAINT 消息,操作系统也会自动检测窗口是否需要重绘而将 WM_PAINT 消息投入消息队列(具体请看第四讲),但是投放到消息队列里的 WM_PAINT 消息是级别极低的,必须等到消息队列中所有的消息都执行完毕才会执行。
因此,如果屏蔽了 UpdateWindow,同时消息队列又一直有新消息,那么 WM_PAINT 就不会被调用到。
小甲鱼 发表于 2014-5-26 18:26 static/image/common/back.gif
UpdateWindow 是直接发送 WM_PAINT 消息给窗口过程,注意,这里是直接发送,就是让窗口过程立即执行 WM_P ...
嗯,受教了,弱弱的问一下,为什么我修改的程序不能发声呢,在createwm 里面使用playsound这个函数,应该可以发声的呀,{:5_100:} 秦晓彬 发表于 2014-5-26 20:27 static/image/common/back.gif
嗯,受教了,弱弱的问一下,为什么我修改的程序不能发声呢,在createwm 里面使用playsound这个函数,应该 ...
winmm.lib 库有没有包含进去 :victory: 为什么我的UpdateWindow函数不刷新页面啊?@小甲鱼 努力爬楼中,老师讲的真棒。 受教了,太感谢分享了,没搞清的知识点终于搞清楚了,UpdateWindow没有执行,窗口过程函数中的WM_PAINT消息处理就没有调用,文字就显示不出来,一旦UpdateWindow调用,那么Windows就会发送非队列的WM_PAINT给窗口过程函数;如果不调用UpdateWindow,那么如果消息队列中有N个消息在处理,也就是需要很长时间才能看到文字显示出来。
同样道理,在动态绘图过程也是类似的,当数据更新后,就需要View也更新,需要系统发送WM_PAINT的消息到窗口过程函数,而不是一直等待。
那么又存在一个疑问:UpdateWindow和InvalidateRect都能使得Windows发送WM_PAINT到窗口过程,二者这方面有什么区别呢? {:5_109:} 小鱼这个网站可要一直存在啊,要是以后查参数发现不再了,就不好啦{:10_266:}
页:
[1]