更新窗口

时间: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消息,可以根据此值来判断背景是否被刷新。

更新窗口,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!