在MFC中,UpdateData()是一個(gè)CDataExchange類的成員函數(shù),用于將對(duì)話框中的控件數(shù)據(jù)更新到關(guān)聯(lián)的變量中,或者將變量數(shù)據(jù)更新到對(duì)話框的控件中。
通常,當(dāng)對(duì)話框的控件值發(fā)生改變時(shí),需要使用UpdateData()函數(shù)將控件值更新到關(guān)聯(lián)的變量中。而當(dāng)變量的值發(fā)生改變時(shí),需要使用UpdateData()函數(shù)將變量值更新到對(duì)話框的控件中。
使用UpdateData()函數(shù)的一般方法如下:
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_strData);
}
void CMyDialog::OnEnChangeEdit1()
{
UpdateData(TRUE); // 將控件值更新到關(guān)聯(lián)的變量中
}
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_strData = "Hello World";
UpdateData(FALSE); // 將變量值更新到對(duì)話框控件中
return TRUE;
}
需要注意的是,UpdateData()函數(shù)的參數(shù)為TRUE時(shí),表示將控件值更新到關(guān)聯(lián)的變量中;參數(shù)為FALSE時(shí),表示將變量值更新到對(duì)話框控件中。
另外,UpdateData()函數(shù)返回一個(gè)BOOL值,表示更新數(shù)據(jù)是否成功。如果返回FALSE,通常是因?yàn)閿?shù)據(jù)轉(zhuǎn)換失敗或者驗(yàn)證失敗??梢允褂肬pdateData()的返回值來(lái)判斷更新數(shù)據(jù)是否成功。例如:
if (UpdateData(TRUE))
{
// 數(shù)據(jù)更新成功
}
else
{
// 數(shù)據(jù)更新失敗
}