当前位置: 编程技术>c/c++/嵌入式
解析在WTL下使用双缓冲的实现方法
来源: 互联网 发布时间:2014-10-14
本文导语: 使用WTL的CDoubleBufferImpl类可以方便的实现双缓冲,而不必自己实现繁琐的代码,不仅可以绘制一般窗口,也可以绘制对话框的背景等。首先 #include 其次需要双缓冲画图的类需要派生自CDoubleBufferImpl:class CMainDlg : public CDialogImpl, ...
使用WTL的CDoubleBufferImpl类可以方便的实现双缓冲,而不必自己实现繁琐的代码,不仅可以绘制一般窗口,也可以绘制对话框的背景等。
首先 #include
其次需要双缓冲画图的类需要派生自CDoubleBufferImpl:
class CMainDlg : public CDialogImpl, public CDoubleBufferImpl{}
然后消息链中加入
BEGIN_MSG_MAP_EX(CMainDlg)
//....
CHAIN_MSG_MAP(CDoubleBufferImpl)
END_MSG_MAP()
最后写DoPaint函数,直接画就可以了
void DoPaint(CDCHandle dc)
{ //画个矩形
dc.Rectangle(0, 0, 10, 10);
}
成了。
注意,由于CDoubleBufferImpl类响应了WM_PAINT消息和WM_ERASEBKGND消息,因此,自己的类中不必再响应。
首先 #include
其次需要双缓冲画图的类需要派生自CDoubleBufferImpl:
class CMainDlg : public CDialogImpl, public CDoubleBufferImpl{}
然后消息链中加入
BEGIN_MSG_MAP_EX(CMainDlg)
//....
CHAIN_MSG_MAP(CDoubleBufferImpl)
END_MSG_MAP()
最后写DoPaint函数,直接画就可以了
void DoPaint(CDCHandle dc)
{ //画个矩形
dc.Rectangle(0, 0, 10, 10);
}
成了。
注意,由于CDoubleBufferImpl类响应了WM_PAINT消息和WM_ERASEBKGND消息,因此,自己的类中不必再响应。