文章目錄
- 四、 為對話框中的控件添加變量
- 五、對話框類的
- 5.1 為編輯框添加變量
面步驟中 為對話框添加了幾個控件,包括三個靜態文本框,三個編輯框,一個按鈕控件。
四、 為對話框中的控件添加變量
編輯框中的數據可能會經常變化,有必要為它們每個控件關聯一個變量。
首先為被加數的編輯框 IDC_SUMMAND_EDIT 添加變量。
- 在編輯框上點右鍵,在右鍵菜單中選擇“Add Variable”。彈出添加成員變量的向導對話框。
2 .我們想為其添加值變量而不是控件變量,所以對話框中“Category”下的組合框中選擇Value。
-
“Variable type”下的組合框此時默認選中的是“CString”,CString是字符串類,顯然不能進行加法運算。我們可以選擇double、float、int等。這里我們選擇double,即編輯框關聯一個double類型的變量。
-
在“Variable name”中寫入自定義的變量名。為其取名m_editSummand。
5.點“Finish”完成。
注意,類的成員變量名一般以m_打頭,以標識它是一個成員變量。
參照此方法,再分別為加數的編輯框IDD_ADDEND_EDIT添加double型變量m_editAddend、和的編輯框IDD_SUM_EDIT添加double型變量m_editSum。
添加完成后,可以再 **Dlg.h頭文件中看到,剛才添加的三個變量;
**Dlg.cpp文件中可以看到CAdditionDlg()函數中U盾哦了三個變量的并初始化。
**Dlg.cpp文件中可以看到:DoDataExchange()函數的函數體中多了三條DDX_Text調用語句,用于數據交換。
五、對話框類的
在程序運行界面中,用戶往往會改變控件的屬性,例如,在編輯框中輸入字符串,或者改變組合框的選中項,又或者改變復選框的選中狀態等。控件的屬性改變后MFC會相應修改控件關聯變量的值。這種同步的改變是通過MFC為對話框類自動生成的成員函數DoDataExchange()來實現的,這也叫做對話框的數據交換和檢驗機制。
5.1 為編輯框添加變量
我們為三個編輯框添加了變量以后,在AdditionDlg.cpp 中 CAdditionDlg 的 DoDataExchange()函數的函數體中多了三條DDX_Text調用語句。下面是函數體代碼和添加的注釋。
再以 Addition 程序為例簡單說下數據交換機制。如果我們在程序運行界面中輸入被加數,則通過CAddition的DoDataExchange()函數可以將輸入的值保存到 m_editSummand 變量中,反之如果程序運行中修改了變量 m_editSummand 的值,則通過 CAddition 的 DoDataExchange() 函數也可以將新的變量值顯示到被加數的編輯框中。
但是這種數據交換機制中,DoDataExchange() 并不是被自動調用的,而是需要我們在程序中調用 CDialogEx::UpdateData()函數,由 UpdateData() 函數再去自動調用 DoDataExchange()的。
CDialogEx::UpdateData() 函數的原型為: BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
參數:bSaveAndValidate 用于指示數據傳輸的方向,TRUE 表示從 控件 傳給 變量,FALSE 表示從 變量 傳給 控件。默認值是 TRUE,即從 控件 傳給 變量。
UpdateData(true);//把編輯框中的數值傳到m_editSummand中,括號內缺省值為true
UpdateData(false);//把m_editSummand的值傳遞到編輯框中并顯示
返回值:CDialogEx::UpdateData()函數的返回值表示操作是否成功,成功則返回TRUE,否則返回FALSE。
在下一講中將具體演示CDialogEx::UpdateData()函數如何使用。
本節主要講的是新建對話框類和添加控件變量,控件的消息處理函數將在下一講詳細介紹。