VS2010MFC編程入門之八(對話框:創(chuàng)建對話框類和添加控件變量)_第1頁
VS2010MFC編程入門之八(對話框:創(chuàng)建對話框類和添加控件變量)_第2頁
VS2010MFC編程入門之八(對話框:創(chuàng)建對話框類和添加控件變量)_第3頁
VS2010MFC編程入門之八(對話框:創(chuàng)建對話框類和添加控件變量)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

前兩講中雞啄米為大家講解了如何創(chuàng)建對話框資源。創(chuàng)建好對話框資源后要做的就是生成對話框類了。雞啄米再聲明下,生成對話框類主要包括新建對話框類、添加控件變量和控件的消息處理函數(shù)等。因為雞啄米給大家的例程Addition是基于對話框的程序,所以程序自動創(chuàng)建了對話框模板IDD_ADDITION_DIALOG,并自動生成了對話框類CAdditionDlg,它是從CDialogEx類派生的。大家用過VC++6.0的可能記得,我們定義的對話框類都是從CDialog類派生的,但在VS2010中,一般對話框類都是繼承自CDialogEx類。創(chuàng)建對話框類如果是自己新添加的對話框模板,怎樣為它創(chuàng)建對話框類呢?1?首先雞啄米就按第六講:創(chuàng)建對話框模板和修改對話框?qū)傩灾姓f的那樣,在ResourceView的"Dialog”節(jié)點上右鍵,然后在右鍵菜單中選擇"InsertDialog”創(chuàng)建一個新的對話框模板,ID就使用默認(rèn)的IDD_DIALOG1。在中間區(qū)域會顯示新建的對話框模板,然后選中此對話框模板,點右鍵,在右鍵菜單中選擇AddClass。11E<?Addri&Mi.rc-hJQOHt c-Dwlog"AddhiwIKgdxpiAddihoo.rcrDD.OlAUOGl-11E<?Addri&Mi.rc-hJQOHt c-Dwlog"AddhiwIKgdxpiAddihoo.rcrDD.OlAUOGl-jlljPkIbtjj■■丁Additlflfi』Addition.Fr*J」Oil如■:嘰幅呦呦JEM_iEPiri3M.J啦JICCMI」SuTngiFflblpJVtrs^Mi*KimiQrttJftopyClrlKOH4-VXQdvirEBddt■■曜iH:—Irser!fetmXCorrtmJ-.jJdOtn-AddVbhbJ^--巒□事■W-jiFd_ShituXM£匸EEAligriMtQtI3? tl旳Afrwi4JlgnT^ptCiP-SiwhtUpjSLrrewClwfMrifinenksGiltM3.選擇“AddClass”后會彈出一個對話框,在對話框中'Classname”下的編輯框中寫入自定義的類名就可以了,例如CMyDialog。4.最后點"Finish”完成。最終你就可以在ClassView中看到新生成的對話框類CMyDialog了,并且在SolutionExplorer中有相應(yīng)的MyDialog.h頭文件和MyDialog.cpp源文件生成。CMyDialog類同樣派生于CDialogEx類。注意,一般類名都以C打頭,又比如,CTestDlg。為對話框中的控件添加變量在上一講中為對話框添加了幾個控件,包括三個靜態(tài)文本框,三個編輯框,一個按鈕控件。程序自動生成的Cancel按鈕保留,作為退出按鈕,而0K按鈕刪除掉了。靜態(tài)文本框只是為了說明后面緊跟的編輯框中數(shù)據(jù)的意義,是被加數(shù)、加數(shù)還是和,所以它們是不會變的,我們就不為它們添加變量了。按鈕控件是用來操作的,這里也不為它們添加變量。編輯框中的數(shù)據(jù)可能會經(jīng)常變化,有必要為它們每個控件關(guān)聯(lián)一個變量。首先為被加數(shù)的編輯框IDC_SUMMAND_EDIT添加變量。1?在編輯框上點右鍵,在右鍵菜單中選擇“AddVariable”。彈出添加成員變量的向?qū)υ捒?。我們想為其添加值變量而不是控件變量,所以對話框?Category”下的組合框中選擇Value。"Variabletype”下的組合框此時默認(rèn)選中的是CString”,CString是字符串類,顯然不能進(jìn)行加法運(yùn)算。我們可以選擇double、float、int等。這里我們選擇double,即編輯框關(guān)聯(lián)一個double類型的變量。在“Variablename”中寫入自定義的變量名。雞啄米為其取名m_editSummand。

5.點“FiniS完成。注意,類的成員變量名一般以m_打頭,以標(biāo)識它是一個成員變量。參照此方法,再分別為加數(shù)的編輯框IDD_ADDEND_EDIT添加double型變量m_editAddend、和的編輯框IDD_SUM_EDIT添加double型變量m_editSum。對話框類的數(shù)據(jù)交換和檢驗在程序運(yùn)行界面中,用戶往往會改變控件的屬性,例如,在編輯框中輸入字符串,或者改變組合框的選中項,又或者改變復(fù)選框的選中狀態(tài)等??丶膶傩愿淖兒驧FC會相應(yīng)修改控件關(guān)聯(lián)變量的值。這種同步的改變是通過MFC為對話框類自動生成的成員函數(shù)DoDataExchange()來實現(xiàn)的,這也叫做對話框的數(shù)據(jù)交換和檢驗機(jī)制。我們?yōu)槿齻€編輯框添加了變量以后,在AdditionDlg.cpp中CAdditionDlg的DoDataExchange()函數(shù)的函數(shù)體中多了三條DDX_Text調(diào)用語句。下面是函數(shù)體代碼和雞啄米添加的注釋。C++代碼voidCAdditionDlg::DoDataExchange(CDataExchange*pDX){//處理MFC默認(rèn)的數(shù)據(jù)交換4.CDialogEx::DoDataExchange(pDX);4.//處理控件IDC_SUMMAND_EDIT和變量m_editSummand之間的數(shù)據(jù)交換DDX_Text(pDX,IDC_SUMMAND_EDIT,m_editSummand);//處理控件IDC_ADDEND_EDIT和變量m_editAddend之間的數(shù)據(jù)交換DDX_Text(pDX,IDC_ADDEND_EDIT,m_editAddend);//處理控件IDC_SUM_EDIT和變量m_editSum之間的數(shù)據(jù)交換DDX_Text(pDX,IDC_SUM_EDIT,m_editSum);}雞啄米再以Addition程序為例簡單說下數(shù)據(jù)交換機(jī)制。如果我們在程序運(yùn)行界面中輸入被加數(shù),則通過CAddition的DoDataExchange()函數(shù)可以將輸入的值保存到m_editSummand變量中,反之如果程序運(yùn)行中修改了變量m_editSummand的值,則通過CAddition的DoDataExchange()函數(shù)也可以將新的變量值顯示到被加數(shù)的編輯框中。但是這種數(shù)據(jù)交換機(jī)制中,DoDataExchange()并不是被自動調(diào)用的,而是需要我們在程序中調(diào)用CDialogEx::UpdateData()函數(shù),由UpdateData()函數(shù)再去自動調(diào)用DoDataExchange()的。CDialogEx::UpdateData()函數(shù)的原型為:BOOLUpdateData(BOOLbSaveAndValidate=TRUE);參數(shù):bSaveAndValidate用于指示數(shù)據(jù)傳輸?shù)姆较颍琓RUE表示從控件傳給變量,F(xiàn)ALSE表示從變量傳給控件。默認(rèn)值是TRUE,即從控件傳給變量。返回值:CDialogEx::

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論