其实控件更新不必要每次都用CWnd::Update()函数,其实它内部部分代码如下:
CDataExchange dx(this, bSaveAndValidate);
// 省略
DoDataExchange(&dx);
可见CDataExchange对象构造时确定了存取方向,再调用DoDataExchange(CDataExchange* pDX)函数实现数据交换。
受此启发,自己在对话框内嵌入两个指针CDataExchange *pDXSave,*pDXLoad;
在OnInitDialog()函数对其进行实例化
pDXSave=new CDataExchange(this, TRUE);
pDXLoad=new CDataExchange(this, FALSE);
在其后需要数据交换的地方,将DoDataExchange(CDataExchange* pDX)函数中有关的控件交换语句摘过来,把pDX换成pDXSave或pDXLoad。
此法可提高对话框数据交换的运行效率。
By SavageConan
2008.03.14
本文介绍了通过自定义CDataExchange对象来提高对话框数据交换效率的方法。作者提出了一种避免每次使用CWnd::Update()函数更新控件的方式,即在对话框类中预先创建用于保存和加载的数据交换对象,并在需要的时候直接调用这些对象进行数据交换。
878

被折叠的 条评论
为什么被折叠?



