[转]WTL 方式 对话框数据交换(DDX)
源自http://www.cnblogs.com/fangshenghui/archive/2010/09/22/1833010.html
WTL的DDX(对话框数据交换)很像MFC,可以使用很简单的方法将变量和控件关联起来。
1,从CWindowImpl派生一个新类。
class CMainDlg : public CDialogImpl<CMainDlg>,
public CWinDataExchange<CMainDlg> //用DDX交换数据
{
//……
};
2、将#include atlddx.h 添加到stdafx.h中,这样就可以使用DDX代码
3、将CWinDataExchange添加到继承列表中:
class CMainDlg : public CDialogImpl<CMainDlg>,
public CWinDataExchange<CMainDlg>
{
//...
};
4、接着在对话框类中添加DDX链,对于不同类型的数据可以使用不同的DDX宏。例如:
class CEditImpl : public CWindowImpl<CEditImpl, CEdit>
{
//……
BEGIN_DDX_MAP(CMainDlg)
DDX_CONTROL(IDC_EDIT, m_wndEdit)
END_DDX_MAP()
//……
}
5、在OnInitDialog()中调用DoDataExchange()函数,这个函数是继承自CWinDataExchange。DoDataExchange()第一次被调用时完成相关控件的子类化工作。