複製鏈接
請複製以下鏈接發送給好友

UpdateData

鎖定
UpdateData() 是MFC窗口函數,用來刷新數據的。
總的來説:操作系統會調用這個函數來初始化對話框中的數據,或者檢索或者驗證對話框中的數據。
簡單説就是:如果UpdateData(TRUE) == 將控件的值賦值給成員變量;UpdateData(FALSE) == 將成員變量的值賦值給控件。
中文名
UpdateData
外文名
BOOL UpdateData
意    義
MFC的窗口函數
作    用
刷新數據

UpdateData函數説明

UpdateData() 是MFC的窗口函數,用來刷新數據的。
總的來説:操作系統會調用這個函數來初始化對話框中的數據,或者檢索或者驗證對話框中的數據。

UpdateData函數原型

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
參數説明
bSaveAndValidate:標明那對話框是初始化(FALSE)還是數據恢復(TRUE)。

UpdateData函數使用

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) == 將成員變量的值賦值給控件,將數據從窗口顯示。
實例説明:
例如我們在對話框窗口中添加了3個editbox,然後將前兩個的值相加,然後在第三個editbox中輸出。
那麼我們可以做如下處理:
1。用類嚮導在3個editbox下添加3個變量,我們命名為m_num1,m_num2,m_num3。
2。然後我們可以多添加一個button控件,在其的click處理事件中,添加以下代碼:
UpdateData();// 默認的缺省參數為TRUE,這樣,將EditBox控件的內容讀入到與其關聯的變量中
m_num3 = m_num1+m_num2;
UpdateData(FALSE);// 將變量的值,輸出到與其關聯的EditBox中
就可以了

UpdateData函數返回值説明

bool類的函數,如果,所需數據設定了範圍。
合法返回1,否則返回0
函數使用注意點:
當你使用UpdateData()函數的時候,你要清楚一個重要的點,那就是它的範圍是你調用它的類所代表的框架中生效。舉個例子:我們有一個主對話框,然後在其中建立了三個標籤頁。三個標籤頁分別關聯了三個類。那麼我們要在主對話框中使用標籤頁中關聯了一個編輯框的變量時,如果你使用UpdateData(false)的時候,你會發現沒有效果。你必須用標籤頁的類如CPage0 page0; page0.UpdateData(false);才會達到你的目的。
注意:1.用於數據交換的DoDataExchange函數是不能被直接調用的,必須通過調用UpdateData()函數來調用DoDataExchange函數。所以在用到控件與關聯的成員變量交換數據時,要首先調用UpdateData()函數。
2.當模態對話框被創建時,在OnInitialDialog()函數里framework自動的調用UpdateData(FALSE)。該函數的調用在對話框出現之前。而且在默認的接口函數OnOk()裏也調用了該函數UpdateData(TRUE)來獲取數據,如果調用成功,將會關閉對話框。(如果單擊Cancel按鈕,就不會調用該函數)