更新窗口
时间:2014-04-29 10:15:46
收藏:0
阅读:289
InvalidateRect
rect是你指定要刷新的区域,此区域外的客户区域不被重绘,这样防止客户区域的一个局部的改动,而导致整个客户区域重绘而导致闪烁
如果最后的参数为TRUE,则还向窗体发送WM_ERASEBKGND消息,使背景重绘,当然在客户区域重绘之前。
UpdateWindow
在发送之前通过GetUpdateRect判断有无可绘制的客户区域
如果没有,则不发送WM_PAINT
如果希望立即刷新无效区域,可以在调用InvalidateRect之后调用UpdateWindow
这一WM_PAINT消息不进入消息队列,直接由WINDOWS调用窗口过程。
窗口过程完成刷新以后立刻退出,WINDOWS将控制返回给程序中UpdateWindow调用之后的语句。
WM_ERASEBKGND
首先需要明确,WM_ERASEBKGND消息总是比WM_PAINT消息提前发送。
WM_ERASEBKGND消息的目的是用窗口自定义的画刷将无效区域刷新。
如果InvalidateRect函数指定不更新背景,则不发送WM_ERASEBKGND消息。
程序员可以处理WM_ERASEBKGND消息,直接定义自己的处理过程(比如直接返回TRUE,这样,背景就不刷新了),刷新函数是默认的Def函数。
WM_ERASEBKGND的返回值将被WM_PAINT消息的PS结构中的一个字段所占用,当处理WM_PAINT消息,可以根据此值来判断背景是否被刷新。
评论(0)