MFC中InvalidateRect()与Invalidate()
InvalidateRect
声明
BOOL InvalidateRect(
HWND hWnd, // 窗口句柄
CONST RECT* lpRect, // 矩形区域
BOOL bErase = true //是否擦除背景
);
仅对矩形区域(lpRect所指区域)进行重绘;
bErase指重绘前(WM_PAINT)是否用背景色(默认为白色)对无效区域进行擦除(WM_ERASEBKGND)。默认为true即进行擦除,在这种情况下可能出现闪烁的情况(如北背景为一张图片)。故此时选用false较好,不会闪烁。
Invalidate
声明
void Invalidate( BOOL bErase )
同样,bErase 决定了是否要在WM_PAINT消息前发送WM_ERASEBKGND。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。
UpdateWindow
作用:立即重绘窗口
InvalidateRect与Invalidate都是通过发送WM_PAINT消息进入消息队列中进行排队,当消息队列中有消息时WM_PAINT并不会立即执行,需要等待前面的消息执行完成才执行重绘操作。故想要立即重回窗口就需要调用UpdateWindow函数,该函数可以使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。
posted on 2016-11-28 14:39 silentteen 阅读(381) 评论(0) 编辑 收藏 举报