2012-02-23 47 views
1

我有一个使用派生MFC类绘制控件的MFC对话框的问题。自定义控件无闪烁对话框

我们的客户之一有一台真正的缓慢的电脑与一个糟糕的图形卡,甚至正常的Windows对话画漆很慢。在我们的案例中,问题更为严重。每个单独的控件(例如按钮,组框,标签)可以看作是分开绘制的。

在大多数情况下,我已经重写/实现了OnPaint()处理程序,认为在提供的任何设备上下文上绘制应该是要走的路。

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

有人可以请教我怎么才能实现这种双缓冲?

回答

0

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

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

+1

如果您重写了WM_PAINT处理程序,请确保它执行BeginPaint和EndPaint - 这就是告诉Windows该区域已被正确绘制并且不需要发送另一个WM_PAINT。 – 2012-02-24 22:33:08