實驗七常用控件應(yīng)用_第1頁
實驗七常用控件應(yīng)用_第2頁
實驗七常用控件應(yīng)用_第3頁
實驗七常用控件應(yīng)用_第4頁
實驗七常用控件應(yīng)用_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗七 常用控件應(yīng)用【實驗?zāi)康摹?1) 學(xué)習(xí)和掌握基本控件及其使用方法(2) 學(xué)習(xí)各種基本控件和相關(guān)函數(shù)的建立與調(diào)用【實驗要求】(1) 必須做好實驗原理的預(yù)習(xí)。(2) 需要對提供的程序代碼進行分析,并明確實驗中各個環(huán)節(jié)的意義。【實驗環(huán)境】設(shè)計一個如圖1所示的用戶調(diào)查表圖,并使用一個靜態(tài)文本控件用來顯示該用戶的所有信息,本例子主要用來說明對話框和控件的使用。Microsoft Windows XP Microsoft Visual C+ 6.0圖1 用戶調(diào)查表【實驗步驟】1創(chuàng)建工程1) 步驟1:在VC+集成開發(fā)環(huán)境中,通過菜單File->New,彈出New對話框;2) 步驟2:在Proje

2、cts標(biāo)簽中選擇MFC App Wizard(exe),在Project name中輸入“Eg_1”,Location讀者可以自己選擇;3) 步驟3:按下OK按鈕,在彈出的MFC App Wizard Step-1對話框中選擇程序框架為單文檔框架,即選中Single Document;4) 步驟4:按下OK按鈕,在彈出的New Project Information對話框中按下OK按鈕后等待創(chuàng)建完相應(yīng)的工程。2. 創(chuàng)建對話框資源1) 在工作區(qū)中選中Resourse View標(biāo)簽展開Eg_1Resourse->Dialog條目,可以察看當(dāng)前工程中的對話框資源;2) 選擇Dialog條目,單

3、擊鼠標(biāo)右鍵,彈出活動菜單,選擇菜單Insert Dialog命令;3) 將鼠標(biāo)移動到對話框資源上,單擊鼠標(biāo)右鍵,在彈出的菜單中選擇Properties菜單命令,將對話框的標(biāo)題設(shè)置為“用戶調(diào)查表”標(biāo)識號不變。4) 刪除對話框資源本來就有的靜態(tài)控件,利用鼠標(biāo)將按鈕OK和CANCEL移動到對話框的底部,將按鈕的標(biāo)題分別改為確定,取消。5) 在工具欄中的靜態(tài)控件上單擊一下鼠標(biāo)左鍵,然后在對話框資源中按下鼠標(biāo)左鍵拖動,出現(xiàn)一個矩形框,松開鼠標(biāo)左鍵,則在對話框資源中出現(xiàn)一個靜態(tài)控件,將該靜態(tài)控件的標(biāo)題改為“姓名”其標(biāo)識號改為IDC_STATIC_NAME。按照上面的方法在對話框資源上加入其它的控件,它們的

4、類型、標(biāo)題和標(biāo)識號如下表1:表1 對話框資源中各控件屬性3. 生成對話框類資源創(chuàng)建完畢以后,還需要創(chuàng)建一個與對話框資源相關(guān)聯(lián)的類,這個類需要從對話框類派生,然后定義一個派生類的對象,通過派生類的對象使對話框的功能得以實現(xiàn)。生成對話框類的操作步驟:1) 在對話框資源上單擊右鍵,在彈出的菜單中選擇Class Wizard,在MFC Class Wizard對話框彈出以后緊接著彈出Adding Class。在打開對話框的過程中,如果系統(tǒng)監(jiān)測到有新建的對話框資源,菜單資源等,并且該資源沒有與之相關(guān)聯(lián)的類,就會彈出對話框,詢問是否創(chuàng)建新的類 。2) 在Adding Class對話框中確認默認選擇Crea

5、te a new class,單擊按鈕彈出New Class對話框,在編輯框中輸入新建類的名稱CEg_1Dialog,其他設(shè)置取默認值。3) 單擊OK按鈕后顯示出MFC Class Wizard對話框 。4. 為控件建立相關(guān)聯(lián)的成員變量4) 在MFC Class Wizard對話框中默認的Projects和 Class name項為Eg_1和CEg_1Dialog。5) 選中Member Variables標(biāo)簽中的Control Ids項中的IDC_EDIT_NAME條目,單擊Add Variables按鈕,將彈出Add Variables對話框。6) 在Add Variables對話框中添加

6、成員變量m_Name,與編輯控件IDC_EDIT_NAME相關(guān)聯(lián),類型為CString ,catogory為Value。7) 單擊OK按鈕,添加變量完成。Add Variables對話框,如圖2 :圖2 Add Variables對話框按照上述方法為其它控件添加相關(guān)聯(lián)的變量,如表2所示:表2 控件與其相關(guān)聯(lián)的變量對應(yīng)表5. 成員變量的初始化成員變量的初始化需要重載對話框類的OnInitDialog()函數(shù)。OnInitDialog是一個虛函數(shù),它在對話框顯示之前被調(diào)用,用戶可以通過重載該函數(shù)對對話框中的各種控件進行初始化。操作如下:打開MFC Class Wizard,選中標(biāo)簽Member M

7、ap標(biāo)簽中的Control IDs項中的IDC_COMBO1條目,在Messages里面選擇WM_INITDIALOG,單擊Add Function按鈕,然后單擊Edit Code按鈕,進入源程序,編輯OnInitDialog()函數(shù)。增加以后的代碼如下:BOOL CInvest:OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization herem_Province.AddString("湖南");m_Province.AddString("河南");return TRUE

8、; / return TRUE unless you set the focus to a control6. 建立消息映射與響應(yīng)函數(shù)需要在用戶選擇了省份以后更新有關(guān)城市的信息,這就需要在組合框中增加消息響應(yīng)函數(shù),功能是當(dāng)用戶打開第二個組合框的下拉式列表框的時候及時更新相關(guān)省份的城市信息。操作步驟:打開MFC Class Wizard,選中標(biāo)簽Member Map標(biāo)簽中的Control IDs項中的IDC_COMBO2條目,在Messages里面選擇CBN_DROPDOWN,單擊“Add Function”按鈕,接受系統(tǒng)默認的函數(shù)名,然后單擊“Edit Code”按鈕,進入源程序,編輯函數(shù)如下

9、:響應(yīng)函數(shù)void CEg7_1Dlg:OnDropdownCombo2()/ TODO: Add your control notification handler code hereCString m_1;m_Province.GetWindowText(m_1);if(m_1="河南")m_City.ResetContent();m_City.AddString("鄭州");m_City.AddString("洛陽");if(m_1="湖南")m_City.ResetContent();m_City.AddS

10、tring("長沙");m_City.AddString("岳陽");7. 函數(shù)建立與調(diào)用在Workspace工作區(qū)打開Class View,選中要加入函數(shù)的類CEg_1Dlg,點擊鼠標(biāo)右鍵,在彈出的對話框中選擇“Add Member Function” 。在Function Type(函數(shù)類型)中填入CString,表示函數(shù)類型是字符串對象;在Function Declaration(函數(shù)聲明)中填入GetRadio。該函數(shù)用來獲得單選按鈕的信息。然后在CEg_1Dlg.cpp文件中找到該函數(shù),添加函數(shù)代碼如下:CString CEg_1Dlg:Get

11、Radio()CString Radiotext;UINT m_6=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);if(m_6=IDC_RADIO1)Radiotext="男"elsereturn(Radiotext);說明:CWnd的成員函數(shù):GetCheckedRadioButton()返回指定組中的第一個所選中的單選鈕的ID,如果沒有按鈕選中則返回0。該成員函數(shù)的原型: Radiotext="女"int GetCheckedRadioButton(int nIDFirstButton, int nIDLa

12、stButton);其中,第一個參數(shù)是nIDFirstButton同一組中的第一個單選按鈕的ID, nIDLastButton是同一組中最后一個單選按鈕的ID。建立第二個成員函數(shù):1) 同樣為CEg_1Dlg類加入另一個成員函數(shù)GetCheck()以獲得復(fù)選框的信息。在Function Type(函數(shù)類型)中填入CString,表示函數(shù)類型是字符串對象;在Function Declaration(函數(shù)聲明)中填入GetCheck。2) 在CEg_1Dlg.cpp文件中找到該函數(shù),添加函數(shù)代碼如下:函數(shù)代碼:CString CEg_1Dlg:GetCheck()int m=0;CString s

13、tr,Checktext;for(int i=IDC_CHECK1; i<IDC_CHECK6+1; i+)m=(CButton*)GetDlgItem(i)->GetCheck();if (m=1)CWnd:GetDlgItemText(i,str);str+=""Checktext+=str;return(Checktext);重載OnOK()函數(shù):該例將在OnOK()函數(shù)中調(diào)用這兩個成員函數(shù)。打開對話框資源,雙擊“確定”按鈕,接受系統(tǒng)默認的函數(shù)名,重載OnOK()函數(shù):void CMy21Dlg:OnOK()/ TODO: Add extra valida

14、tion hereCString m_1,m_2,m_3,str;m_3=GetRadio(); /調(diào)用成員函數(shù)以得到單選按鈕的信息str=GetCheck(); /調(diào)用成員函數(shù)以得到復(fù)選框中的信息8. 重載其他函數(shù)重載以后的OnOK()函數(shù)源代碼如下:void CMy21Dlg:OnOK()/ TODO: Add extra validation hereUpdateData(TRUE); / 將對話框控件中的內(nèi)容傳給其成員變量 CString m_1,m_2,m_3,str;m_3=GetRadio();str=GetCheck();m_Province.GetWindowText(m_1

15、);m_City.GetWindowText(m_2);SetDlgItemText(IDC_STATIC_NAME," ");SetDlgItemText(IDC_STATIC_EMAIL," ");SetDlgItemText(IDC_STATIC_EDIT," ");SetDlgItemText(IDC_STATIC_SEX," ");SetDlgItemText(IDC_STATIC_HOBBY," ");SetDlgItemText(IDC_STATIC_PROVINCE,"

16、 ");SetDlgItemText(IDC_STATIC_CITY," ");m_Display.SetWindowText(m_Name+","+m_3+","+m_1+m_2+"人也。n有:" +str+"n"+"您的地址:"+m_Email+"n"+"您要說的話:"+m_Edit);m_Display.ShowWindow(TRUE);m_City.ShowWindow(FALSE);m_Province.ShowWi

17、ndow(FALSE);(CEdit*)GetDlgItem(IDC_EDIT_NAME)->ShowWindow(FALSE); (CEdit*)GetDlgItem(IDC_EDIT_EMAIL)->ShowWindow(FALSE); (CEdit*)GetDlgItem(IDC_EDIT_EDIT)->ShowWindow(FALSE); GetDlgItem(IDC_STATIC1)->ShowWindow(FALSE); 您的興趣GetDlgItem(IDC_STATIC2)->ShowWindow(FALSE);(CButton*)GetDlgItem(IDC_RADIO1)->ShowWindow(FALSE); (CBu

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論