UpdateData(TRUE/FALSE)以及DoDataExchange的使用

这里咱们说一下成员函数UpdateData。该函数带有一个布尔类型的参数,若是该参数为FALSE,函数UpdateData将成员变量的值传递给对话框的变量;而若是该参数为TRUE,函数UpdateData将进行相反的过程。函数

若是用户单击了对话框中ID为IDOK的按钮,或者以TRUE为参数调用函数UpdateData,DDX机制从控件中将值传递到成员变量,同时对话框数据验证(dialog data validation,DDV)机制根据设定的验证规则验证全部数据项。在数据交换的过程当中,成员函数UpdateData先建立一个CDataExchange对象,而后调用对话框对类类CDialog成员函数DoDataExchange的重载版本。该CDataExchange对象将做为成员函数DoDataExchange的一个参数,该参数定义了数据交换的上下文。在DoDataExchange中,咱们为每个数据成员指定了一个对DDX函数的调用。每个函数定义了基于由成员函数UpdateData所提供的
CDataExchange参数所肯定的上下文而进行的双向数据交换。对象

下面的代码摘自实现文件DialogDemo.cpp中对函数DoDataExchange的
定义:
void CDialogDemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogDemoDlg)
DDX_Text(pDX, IDC_EDIT, m_strEdit);
DDV_MaxChars(pDX, m_strEdit, 50);
//}}AFX_DATA_MAP
}it

在两行注释//{{AFX_DATA_MAP和//}}AFX_DATA_MAP之间的代码部分称做数据映射。函数DDX_Text使用CString对象m_strEdit与ID为IDC_EDIT的编辑框控件相关联。函数DDV_MaxChars设置与编辑框控件IDC_EDIT相关联CString对象m_strEdit的最大长度为50。io

须要注意的是,若是用户在模式对话框中单击了“取消”(Cancel)按钮,DoModal函数将返回值IDCANCEL,在这种状况下,在对话框和对话框对象以前的数据交换不会发生。变量

相关文章
相关标签/搜索