请教WM_PAINT消息什么时候被触发?

来源:百度知道 编辑:UC知道 时间:2024/06/15 22:59:13
谢谢!
什么是时候“Invalidate”呢?

改变窗口大小,或者窗口被遮挡(去除遮挡)时,窗口自动产生WM_PAINT消息重绘有变化的区域(无效区)。
当你需要人工指定窗口重绘时,依此原理,可以指定窗口客户区的某些区域无效,让其重绘。
Invalidate指定整个客户区无效;
InvalidateRect和InvalidateRgn分别指定某个矩形或某区域无效。
这三个函数向窗口发送了WM_PAINT消息进入消息队列。当队列较长时(前面还有很多消息未处理),就不能即时刷新了。
你可以在上面三个函数后加一句UpdateWindow(),这样就可以立即刷新窗口了。

类似功能的函数还有RedrawWindow等等。请参阅MSDN

系统在特定时候,必须窗口改变尺寸
或者人工设定,比如Invalidate函数
都会有WM_PAINT触发

无论何时当你改变窗口大小,或者当有别的窗口遮住你的窗口的时候都要进行窗口的重绘。窗口的重绘是很频繁的

在Invalidate时触发