我在画画方面经历了很多。目前我正在使用WM_TIMER来使用InvalidateRect计划绘画。由于某种原因,WM_PAINT经常被调用区域(0,0,0,0),所以基本上是一个空矩形。我试图将其解释为“整个窗口”,但之后它似乎会导致性能下降。为什么Windows会发送它呢?
答案 0 :(得分:5)
您的问题在标准文档中得到了很好的解答:http://msdn.microsoft.com/en-us/library/windows/desktop/dd145213%28v=vs.85%29.aspx。
基本上,当消息队列为空时,系统会发送WM_PAINT消息,默认情况下,无论是否有任何要绘制的内容,它都会发送消息。许多较旧的应用程序依赖于WM_PAINT(例如进行空闲时间处理)并保持此行为可确保兼容性。
不,你不能认为它意味着整个屏幕。如果该区域为空,则应避免调用BeginPaint / EndPaint并将其传递给默认窗口过程。