【问题标题】:Flicker-free dialogs with custom controls带有自定义控件的无闪烁对话框
【发布时间】:2012-02-23 03:39:57
【问题描述】:

我对使用派生 MFC 类绘制的用于自定义控件绘制的 MFC 对话框有疑问。

我们的一位客户的 PC 速度很慢,显卡很差,甚至正常的 Windows 对话框的绘制速度也很慢。在我们的例子中,问题要严重得多。可以看到每个单独的控件(例如按钮、组框、标签)是单独绘制的。

在大多数情况下,我已经覆盖/实现了 OnPaint() 处理程序,认为在我提供的任何设备上下文上绘图应该是可行的方法。

理想情况下,我想做的是将所有控件绘制在屏幕外缓冲区上,以便在需要重新绘制对话框时 - 砰 - 它只是将单个渲染图像复制到屏幕,而不是将每个控件绘制到屏幕一张一张。

有人可以告诉我如何实现这种双缓冲吗?

【问题讨论】:

    标签: dialog controls flicker


    【解决方案1】:

    我已经找到了解决问题的方法。通过将对话框扩展样式设置为 WS_EX_COMPOSITED,绘图效果很好。我现在遇到的问题涉及我保留的 WM_PAINT 和 WM_ERASEBKGND 消息的连续流启用此样式时获取。

    有谁知道如何阻止 WM_PAINT/WM_ERASEBKGND 消息不断发生?

    【讨论】:

    • 如果您已覆盖 WM_PAINT 处理程序,请确保它执行 BeginPaint 和 EndPaint - 这就是告诉 Windows 该区域已正确绘制并且不需要发送另一个 WM_PAINT。
    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多