1、Invalidate:使窗口的整个客户区失效,然后给窗口消息队列发送一个WM_PAINT消息,要求重绘(需要排队)
2、UpdateWindow:如果有无效区,则马上sending a WM_PAINT message到窗口处理过程,不进消息队列进行排队等待,立即刷新窗口,如果没有无效区,则什么都不做。
3、OnPaint函数:响应WM_PAINT消息,负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。
4、RedrawWindow :相当于Invalidate+UpdataWIndow,强制重绘窗口。
4、无效区:如果一个被其它窗口遮住的窗口变成了前台窗口(不再被遮挡了),那么原来被遮住的部分就是无效的,需要重绘。
备注:
1、不要在OnPaint函数中写Invalidate函数,会不断的自调用。
2、还有一个小知识点:WM_PAINT消息是等到消息队列为空时,才被发送,因为其优先级比较低,产生多个有重合的无效区时,会合并一同绘制,避免重复绘制。
Windows图形界面刷新机制解析
本文详细介绍了Windows中窗口重绘的几个关键函数:Invalidate、UpdateWindow、OnPaint及RedrawWindow的工作原理和应用场景。重点讲解了无效区的概念及其在窗口显示中的作用,以及WM_PAINT消息的处理流程。同时提醒开发者避免在OnPaint函数中使用Invalidate以防止无限递归。
952

被折叠的 条评论
为什么被折叠?



