6

我一直不太明白为什么擦除背景会有单独的 Windows 消息。我看起来有点多余。当我创建了所有者绘制的按钮时,我总是从 WM_PAINT 内部擦除背景。有时我什至从 WM_ERASEBKGND 内部完成了所有的绘画并将 WM_PAINT 留空。两者似乎都工作正常。将绘画分为 2 个操作有什么好处吗?

4

1 回答 1

4

这完全是猜测:

在过去,用颜色填充矩形是一个相对缓慢的操作。但是填充一个大矩形仍然比填充许多小矩形要快得多。

我猜如果你有一个带有子窗口的窗口,并且两者都有相同的注册背景画笔,那么 Windows 足够聪明,可以意识到它不需要在已经清除父级时向子级发送 WM_ERASEBKGND。对于非常慢的 PC 上的中等复杂对话框,这可能是一个显着的改进。

于 2012-02-27T15:53:57.843 回答