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

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

你可能感兴趣的:(mfc,c++)