我有一个调整大小的对话框。它还有一个自定义背景,我绘制它以响应 WM_ERASEBKGND 调用(当前是对 FillSolidRect 的简单调用)。
调整对话框大小时,会出现巨大的闪烁。为了尝试减少闪烁,我枚举了所有子窗口并将它们添加到剪切区域。这似乎有点帮助——现在闪烁在所有子控件中最明显,因为它们重新绘制。
如何在调整大小时使对话框无闪烁?我怀疑双缓冲必须发挥作用,但我不确定如何通过带有子控件的对话框来做到这一点(而不是让所有子控件都由所有者绘制或类似的东西)。
我应该注意,我使用的是 C++(不是 .NET)和 MFC,尽管欢迎纯基于 Win32 的解决方案 :)
注意:我尝试过但不起作用的一件事(不知道为什么)是:
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.FillSolidRect(rect, backgroundColor);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);