【发布时间】:2012-03-17 01:25:21
【问题描述】:
我一直不太明白为什么擦除背景会有单独的 Windows 消息。我看起来有点多余。当我创建了所有者绘制的按钮时,我总是从 WM_PAINT 内部擦除背景。有时我什至从 WM_ERASEBKGND 内部完成了所有的绘画并将 WM_PAINT 留空。两者似乎都工作正常。将绘画分成2个操作有什么好处吗?
【问题讨论】:
-
如下所述,这是过去的遗留物。对于现代应用程序,您应该始终返回 1 (TRUE) 以响应
WM_ERASEBKGND并在WM_PAINT中执行绘图(以避免闪烁)。仅在屏幕上绘制一次以避免闪烁也很重要。如果您需要绘制一些花哨的东西,请先使用内存 DC 进行绘制。获取here的便捷方法 -
@demorge,如果
WM_PAINT预计会自己擦除,那么您应该从WM_ERASEBKGND返回FALSE。
标签: winapi ownerdrawn