void CMfctmpDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMfctmpDlg)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMfctmpDlg)
DDX_Text(pDX, IDC_EDIT1, m_usercode);
//}}AFX_DATA_MAP
}
}
DoDataExchange会被框架调用,用来改变和验证对话框的数据。在这个函数中一般是将控件和某些变量关联,当在其它地方改变量的值,通过UpdateData 进行双向交换:
如 UpdateData();
m_usercode="ddsssa";
UpdateData(false);
UpdateData,顾名思义,是用来刷新数据的。
UpdateData(TRUE) -- 刷新控件的值到对应的变量
UpdateData(FALSE) -- 拷贝变量值到控件显示例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用 UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE);
简单的说,如果Updatedata(TRUE) ;//将控件的值赋值给成员变量
UpdateData(TRUE) -- 刷新控件的值到对应的变量
UpdateData(FALSE) -- 拷贝变量值到控件显示例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用 UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE);
简单的说,如果Updatedata(TRUE) ;//将控件的值赋值给成员变量
Updatedata(FALSE);//将成员变量的值赋值给控件
如果你为控件分配了变量
UpdateData(true)
是使用户输入的数据能够反映到变量上
在函数调用之后变量才被赋值
UpdateData(false)
是当你给控件对应的变量赋过值之后,在控件上体现出来
在函数调用之前,控件的值是不会随变量变化的