版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范例科普
- 快遞保管合同范例
- 切割支撐合同范例
- 電表供電合同范例
- 家居安裝合同范例
- 學(xué)校教室施工合同范例
- 《認識中括號》(教學(xué)實錄)-2024-2025學(xué)年五年級上冊數(shù)學(xué)冀教版
- 廠區(qū)垃圾運輸合同范例
- 布料面料采購合同范例
- 唐山學(xué)院《社區(qū)發(fā)展與住房規(guī)劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 遼寧省撫順市清原縣2024屆九年級上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(含解析)
- 安徽省蚌埠市聯(lián)考2024-2025學(xué)年七年級上學(xué)期12月期末考試英語試題(無答案)
- 2024-2025年第一學(xué)期小學(xué)德育工作總結(jié):點亮德育燈塔引領(lǐng)小學(xué)生全面成長的逐夢之旅
- 《SYT6848-2023地下儲氣庫設(shè)計規(guī)范》
- 2024至2030年中國甲醚化氨基樹脂行業(yè)投資前景及策略咨詢研究報告
- 行政案例分析-第二次形成性考核-國開(SC)-參考資料
- 2024-2025學(xué)年人教版八年級上學(xué)期數(shù)學(xué)期末復(fù)習(xí)試題(含答案)
- 【MOOC】中級財務(wù)會計-北京交通大學(xué) 中國大學(xué)慕課MOOC答案
- “感恩老師”教師節(jié)主題班會教案【三篇】
- 《園林政策與法規(guī)》課件
- 揚塵防治(治理)監(jiān)理實施細則(范本)
評論
0/150
提交評論