数据交换的对话框

如果使用 DDX 机制,可以设置对话框对象的成员变量的初始值,通常在您的 OnInitDialog 处理程序或对话框构造函数。在对话框中显示之前,结构的 DDX 机制调用成员变量的值到对话框上的控件,则会出现对话框以响应 DoModal创建OnInitDialog 的默认实现在 CDialog 的调用类 CWndUpdateData 成员函数初始化对话框上的控件。

同一结构与控件调用值更改为成员变量,当用户单击 " 确定 " 按钮 (或者,只要调用带有参数 TRUE) 的 UpdateData 成员函数。对话框数据验证框架验证指定验证规则的所有数据项。

下图演示数据交换的对话框。

对话框数据交换

对话数据交换

UpdateData 在两个方向工作,如指定由 BOOL 参数传递给它。若要将执行替换, UpdateData 设置 CDataExchange 对象并调用 entity_CODECDialog 的 DoDataExchange 成员函数您的对话框类的重写。DoDataExchange 采用类型 CDataExchange的参数。CDataExchange 对象传递给 UpdateData 表示该替换的上下文中,定义这类信息与该替换的方向。

当您 (或代码向导) 时重写 DoDataExchange,指定对每个数据成员 (控件) 一个 DDX 功能。每个 DDX 功能知道如何在基于上下文的双向交换数据提供 CDataExchange 参数传递到您的 DoDataExchangeUpdateData

MFC 针对不同类型的替换提供了许多 DDX 功能。下面的示例演示两个 DDX 函数和一个 DDV 函数调用的 DoDataExchange 重写:

void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
   CDialog::DoDataExchange(pDX);
   DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVal);
   DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName);
   DDV_MaxChars(pDX, m_strName, 20);
}

DDX_ 和 DDV_ 行绑定数据映射。该示例 DDX 和显示的 DDV 功能分别为选中 checkbox 控件和编辑框控件,。

如果用户取消模式对话框, OnCancel 成员函数终止对话框,并 DoModal 返回值 IDCANCEL。在这种情况下,数据中没有交换在对话框和对话框对象之间。

请参见

概念

数据交换的对话框和验证

对话框的生命周期

对话框数据验证