MFC程序员的WTL指南(5)对话框与控件
2006-07-22 22:03:31 来源:WEB开发网核心提示: #define _ATL_USE_DDX_FLOAT这个定义是必要的,因为默认状态为了优化程序的大小而不支持浮点数,MFC程序员的WTL指南(5)对话框与控件(10),有关 DoDataExchange()的详细内容调用DoDataExchange()方法和在MFC中使用UpdateDat
#define _ATL_USE_DDX_FLOAT
这个定义是必要的,因为默认状态为了优化程序的大小而不支持浮点数。
有关 DoDataExchange()的详细内容
调用DoDataExchange()方法和在MFC中使用UpdateData()一样,DoDataExchange()的函数原型是:
BOOL DoDataExchange ( BOOL bSaveAndValidate = FALSE, UINT nCtlID = (UINT)-1 );
参数:
bSaveAndValidate 指示数据传输方向的标志。TRUE表示将数据从控件传输给变量,FALSE表示将数据从变量传输给控件。需要注意得是这个参数的默认值是FALSE,而MFC的UpdateData()函数的默认值是TRUE。为了方便记忆,你可以使用DDX_SAVE 和 DDX_LOAD标号(它们分别被定义为TRUE和FALSE)。 nCtlID 使用-1可以更新所有控件,如果只想DDX宏作用于一个控件就使用控件的ID。如果控件更新成功DoDataExchange()会返回TRUE,如果失败就返回FALSE,对话框类有两个重载函数处理数据交换错误。一个是OnDataExchangeError(),无论什么原因的错误都会调用这个函数,这个函数的默认实现在CWinDataExchange中,它仅仅是驱动PC喇叭发出一声蜂鸣并将出错的控件设为当前焦点。另一个函数是OnDataValidateError(),但是要到本文的第五章介绍DDV时才用得到。
使用DDX
在CMainDlg中添加几个变量,演示DDX的使用方法。
class CMainDlg : public ...
{
//...
BEGIN_DDX_MAP(CMainDlg)
DDX_CONTROL(IDC_EDIT, m_wndEdit)
DDX_TEXT(IDC_EDIT, m_sEditContents)
DDX_INT(IDC_EDIT, m_nEditNumber)
END_DDX_MAP()
protected:
// DDX variables
CString m_sEditContents;
int m_nEditNumber;
};
在OK按钮的处理函数中,我们首先调用DoDataExchange()将将edit控件的数据传送给我们刚刚添加的两个变量,然后将结果显示在列表控件中。
更多精彩
赞助商链接