DoDataExchange函数
void CFBKSUpDemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_PROGRESSDISK1, m_Progress1);
DDX_Control(pDX, IDC_PROGRESSDISK2, m_Progress2);
DDX_Control(pDX, IDC_PROGRESSDISK3, m_Progress3);
DDX_Control(pDX, IDC_PROGRESSDISK4, m_Progress4);
DDX_Control(pDX, IDC_PROGRESSDISK5, m_Progress5);
DDX_Control(pDX, IDC_PROGRESSDISK6, m_Progress6);
DDX_Control(pDX, IDC_TAB_PLANT, m_TabPlant);
}
通过VC的向导,可以为每个控件定义一个变量,这段代码就是让变量和控件绑定在一起。
MSDN:Called by the framework to exchange and validate dialog data.即框架调用此函数来改写与确认对话框数据。
DoDataExchange会被框架调用,用来改变和验证对话框的数据。在这个函数中一般是将控件(即上述代码中的IDC_PROGRESSDISK1等是控件的ID)和某些变量(即m_Progress1等是变量)关联,当在其它地方更改变量的值,通过UpdateData进行双向交换。如:
UpdateData();//其缺省值是TRUE,将控件的值传给变量,即IDC_PROGRESSDISK1传给m_Progress1
m_Progress1=testProgress;//为控件的变量赋值
UpdateData(FALSE);//将变量的值传给控件即:m_Progress1传给IDC_PROGRESSDISK1
UpdateData();函数内部调用了DoDataExchange函数。UpdateData();只有一个布尔型参数,它决定了数据的传送方向。缺省为TRUE表示将控件的值传给变量;FALSE表示将数据从数据成员重传送给对应的控件。
关于对话框的数据交换及验证
对话框的数据交换DDX和验证机制DDV,可以使对话框上控件与对象数据成员间协调工作