天天看点

VC++中对话框数据交换【十全十美】

     如果使用 DDX 机制,则通常在 OnInitDialog 处理程序或对话框构造函数中设置对话框对象成员变量的初始值。在对话框即将显示前,框架的 DDX 机制将成员变量的值传输给对话框中的控件,当对话框本身为响应 DoModal 或 Create 而出现时,这些值即出现在该对话框中。

CDialog 中 OnInitDialog 的默认实现调用 CWnd 类的 UpdateData 成员函数以初始化对话框中的控件。当用户单击“确定”按钮(或任何时候调用参数为 TRUE 的 UpdateData 成员函数)时,同样是该机制将控件中的值传输到成员变量。对话框数据验证机制将验证您指定了验证规则的任何数据项。 

        正如传递给它的 BOOL 参数所指定的那样,UpdateData 进行双向交换。为了执行交换,UpdateData 设置 CDataExchange 对象并调用对话框类对 CDialog 的 DoDataExchange 成员函数的重写。DoDataExchange 采用 CDataExchange 类型的参数。传递给 UpdateData 的 CDataExchange 对象

表示交换的上下文,它定义交换方向等信息。当您(或某个代码向导)重写 DoDataExchange 时,也就指定了对每一数据成员(控件)的一个 DDX 函数的调用。UpdateData 传递给您的 DoDataExchange 一个 CDataExchange 参数,每个 DDX 函数都知道如何根据该参数所提供的上下文在两个方向

交换数据。MFC 提供许多用于不同交换类型的 DDX 函数。下例显示一个 DoDataExchange 重写,其中调用了两个 DDX 函数和一个 DDV 函数: 

继续阅读