在MFC应用程序中,经常需要更新对话框中控件变量的值,或更新控件显示值,为达到此目的,方法之一是使用CWnd::UpdateData()函数,下面通过一个小的Demo程序对此此函数的用法进行总结,以加深理解。
1. 新建MFC对话框应用程序TestModel。
2. 删除对话框中默认的Static Text控件及确定取消、按钮。
3. 添加一个Static Text控件,将Caption设置为“数量”
4. 添加Edit Control控件,ID为IDC_EDIT1,并为此文本框控件添加CString类型的变量。
5. 添加两个Button控件,ID分别为IDC_BUTTON1、IDC_BUTTON2,Caption分别为:“更新控件变量”,"改变控件显示"。
6. 为两个按钮控件添加鼠标单击事件,名称分别为:afx_msg void OnBnClickedButton1()、afx_msg void OnBnClickedButton2()。
7. 在对话框初始化函数BOOL CTestModelDlg::OnInitDialog()中添加如下语句,设置文本框的初始值:
GetDlgItem(IDC_EDIT1)->SetWindowText("123");
8. 在OnBnClickedButton1()函数中添加如下语句:
CString nOldVal = m_edtNum;
UpdateData(TRUE);
CString nNewVal = m_edtNum;
9. 在OnBnClickedButton2()函数中添加如下语句:
m_edtNum = "改变了";
UpdateData(FALSE);
10. 编译运行程序进行测试,点击“更新控件变量”按钮,在执行UpdateData(TRUE);语句之前,m_edtNum的值为空,执行之后为“123”,故UpdateData(TRUE)的作用是将文本框界面值跟新到控件变量;
11. 点击"改变控件显示"按钮,执行了m_edtNum = "改变了";语句后若无UpdateData(FALSE);语句,文本框界面显示保持123不变,若执行了UpdateData(FALSE);,文本框界面显示改变为“改变了”,如UpdateData(FALSE)的作用是将控件变量的值更新到界面中。
12. 通过以上步骤,总结如下:
UpdateData(TRUE)的作用是将文本框界面值跟新到控件变量;
UpdateData(FALSE)的作用是将控件变量的值更新到界面中。
13. 当然除此之外我们也可以通过另一种方法更新、获取控件的值,如下所示:
GetDlgItem(IDC_EDIT1)->SetWindowText("123"); 设置控件值;
CString strVal = "";
GetDlgItem(IDC_EDIT1)->GetWindowText(strVal);获取控件值