一、总结UpdateData()函数
UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。
UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。
当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。
二、关于编辑框的赋值和取值
向编辑框中赋值和取值时:
1、建一个 控制型的变量,如m_edit1,用CWnd的SetWindowText() 和GetWindowText()来赋值和取值。
m_Edit1.SetWindowText("Hello");
或者GetDlgItem(IDC_EDIT1)->SetWindowText(str);
2、建立一个控制型的变量,如m_edit1,用SetDlgItemText()和GetDlgItemText()来赋值和取值
CString Str="Hello":
m_edit1.SetDlgItemText(IDC_EDIT1,str);
2、直接建一个 数值形的变量 如m_strEdit; 用 UpdateData()来控制得到变量,还是更新变量。
//取值
UpdateData(TRUE);
CString buf = m_Edit1;
//赋值
m_Edit1="ok!";
UpdateData(FALSE);
Ref: http://blog.csdn.net/yangsen2016/article/details/1618728
补充:UpdateData() 的原理
執行 UpdateData() 這動作 用意是去呼叫 ::DoDataExchange(pDx) 這函示的
用 MFC 精靈產生專案時… 會產生類似如下之程式碼
1 | void CDDXDemoDlg::DoDataExchange(CDataExchange* pDX) |
2 | { |
3 | CDialog::DoDataExchange(pDX); |
4 | DDX_Text(pDX, IDC_EDIT, num); |
5 | DDV_MinMaxInt(pDX, num, 1, 20); |
6 | } |
其中 DDX_ 代表 -> Do Data Exchange
DDV_ 則代表了 -> Do Data Verification
所以執行 UpdateData(TRUE) 就代表了 IDC_EDIT -> num 的資料交換
而 UpdateData(FALSE) 即代表了 num -> IDC_EDIT 的資料交換動作…
且執行 UpdateData() 動作後會去作類似 DDV_MinMaxInt 的資料基本檢查。
Ref: http://brain.wordpress.com/2008/01/27/updatedata/