其实控件更新不必要每次都用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