MFC控件(暫時爲Edit控件)與數據的綁定,變量值能夠在界面和後臺之間傳遞。
咱們在DoDataExchange(CDataExchange* pDX) 函數裏,實現了MFC控件和變量的綁定。若須要 編輯框控件與變量的綁定,則調用DDX函數:DDX_Text();若須要複選框控件與變量的綁定,則調用DDX函數:DDX_Check() 等。框架
CDialogEx::DoDataExchange(pDX); { DDX_Text(pDX,IDC_EDIT_A,Add.a);//須要本身根據實際狀況添加。在新建工程下是沒有這3條語句的 DDX_Text(pDX,IDC_EDIT_B,Add.b); DDX_Text(pDX,IDC_EDIT_C,Add.c); }
DoDataExchange函數實際上是一項數據動態綁定技術。好比你在寫動態按扭過程當中須對按鈕添加變量時,怎麼添加?控件類已經寫好了,其變量是已經固定的。你要添加新的變量就要用到DoDataExchange函數。因此你要在對話框的構造函數裏面初始化一個變量,再用DoDataExchange函數將它綁定到你的動態按扭中,好比:DDX_Check(pDX, IDC_CHECK1, m_Lesson1);這就是將m_Lesson1(這是一個外部變量,其定義在對話框的構造函數裏)綁定到IDC_CHECK1中。函數
看下DDX_Check函數原型:void AFXAPI DDX_Check(CDataExchange* pDX, int nIDC, int& value);
能夠看到m_Lesson並非真的添加到IDC_CHECK1控件裏了,注意這是int& value,只是一個值引用而已。差很少的意思就是這個變量被框架傳遞給控件了.控件只負責使用此變量,而不負責改寫此變量。.net
只有在MFC控件(暫時爲Edit控件)與 變量 綁定 後,進行 UpdateData 纔有意義。
一、UpdateData(TRUE)是將控件的狀態傳給其關聯的變量,固然你要爲控件關聯上變量才行。
UpdateData(FALSE)是將控件的關聯變量的值傳給控件並改變控件狀態。
UpdateData刷新的是當前對話框。
UpdateData(true);//用於將屏幕上控件中的數據交換到變量中。
UpdateData(false);//用於將數據在屏幕中對應控件中顯示出來。
二、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) == 將成員變量的值賦值給控件,將數據從窗口顯示。
————————————————
版權聲明:本文爲CSDN博主「Alen.Wang」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連接及本聲明。
原文連接:
https://blog.csdn.net/qq_2609...code