我有一个调整大小的对话框。它还具有一个自定义背景,我在响应WM_ERASEBKGND调用(当前是对FillSolidRect的简单调用)中绘制了一个自定义背景。如何在Windows对话框中处理WM_ERASEBKGND时避免闪烁
当对话框调整大小时,会发生巨大的闪烁。为了尝试减少闪烁,我列举了所有子窗口并将它们添加到剪辑区域。这似乎有一点帮助 - 现在闪烁现象在所有儿童控制器中都很明显,因为它们被重新绘制。
如何在调整大小时使对话框无闪烁?我怀疑双缓冲必须发挥一部分,但我不知道如何做到这一点与儿童控制的对话(没有使所有的孩子控制所有者绘制或类似的东西)。
我要指出,我使用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);