相关疑难解决方法(0)

如何在Windows对话框中处理WM_ERASEBKGND时避免闪烁

我有一个调整大小的对话框.它还有一个自定义背景,我为响应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);
Run Code Online (Sandbox Code Playgroud)

windows resize dialog gdi flicker

9
推荐指数
4
解决办法
2万
查看次数

标签 统计

dialog ×1

flicker ×1

gdi ×1

resize ×1

windows ×1