MFC 刷新窗口相关知识点整理

Windows图形界面刷新机制解析
本文详细介绍了Windows中窗口重绘的几个关键函数:Invalidate、UpdateWindow、OnPaint及RedrawWindow的工作原理和应用场景。重点讲解了无效区的概念及其在窗口显示中的作用,以及WM_PAINT消息的处理流程。同时提醒开发者避免在OnPaint函数中使用Invalidate以防止无限递归。

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消息是等到消息队列为空时,才被发送,因为其优先级比较低,产生多个有重合的无效区时,会合并一同绘制,避免重复绘制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值