版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第3章 MFC用戶界面設計,課程描述 Windows素來以用戶界面友好而著稱,使用MFC提供的豐富資源,程序員可以方便地設計開發(fā)出擁有友好用戶界面的應用程序。,本章知識點,3.1 對話框編程 3.2 常用控件 3.3 在對話框中使用菜單,3.1 對話框編程,3.1.1 創(chuàng)建基于對話框的項目 3.1.2 設計對話框界面 3.1.3 添加對話框 3.1.4 為對話框綁定類,3.1.1 創(chuàng)建基于對話框的項目,建MFC應用程序向?qū)?選擇應用程序類型窗口,選擇用戶界面功能窗口,設置高級功能窗口,“生成的類”窗口,3.1.2 設計對話框界面,從工具箱中向窗體上添加控件,3.1.3 添加對話框,3.1.4
2、為對話框綁定類,右鍵單擊對話框設計界面的空白處,在快捷菜單中選擇“添加類”,打開“MFC類向?qū)А睂υ捒?,如圖3.10所示。,1添加消息處理程序,切換到對話框設計界面,在屬性窗口中單擊消息圖標 ,可以查看到對話框中的消息,如圖3.12所示。單擊消息右側(cè)的下拉框可以在對話框中添加消息對應的處理程序。,2重寫CDialog類的函數(shù),對話框類是CDialog的派生類,它可以重寫CDialog類的成員函數(shù),實現(xiàn)特定的功能。在Visual Studio的系統(tǒng)菜單中依次選擇“視圖”/“類視圖”,可以打開類視圖,如圖3.13所示。 在類視圖中選中對話框類,在屬性窗口中單擊“重寫”圖標 ,可以查看和設置需要重寫
3、的函數(shù),如圖3.14所示。,3打開對話框,在程序中可以使用CDialog:DoModal()函數(shù)打開一個模式對話框,并返回用戶操作的結果。假定對話框?qū)念悶镃MyDialog,則使用下面的代碼如下打開該對話框。 CMyDialog dlg; dlg.DoModal(); 當無法創(chuàng)建對話框或者用戶關閉對話框時,DoModal()函數(shù)會返回一個int類型的值,具體說明如下: -1,表示無法創(chuàng)建該對話框。 IDABORT,表示用戶單擊對話框中的“終止”按鈕,關閉對話框。 IDOK,表示用戶單擊對話框中的“確定”按鈕,關閉對話框。 IDCANCEL,表示用戶單擊對話框中的“取消”按鈕,關閉對話框。,
4、3.2 常用控件,3.2.1 靜態(tài)文本框控件 3.2.2 文本編輯框控件 3.2.3 按鈕控件 3.2.4 單選按鈕控件 3.2.5 復選框控件 3.2.6 列表框控件 3.2.7 組合框控件 3.2.8 IP地址框控件 3.2.9 列表控件 3.2.10 CImageList類 3.2.11 常用控件應用示例,3.2.1 靜態(tài)文本框控件,靜態(tài)文本框控件的重要屬性,3.2.2 文本編輯框控件,文本編輯框控件的重要屬性,為文本編輯框控件添加變量,將文本編輯框?qū)兞康念悇e設置為Value,CEdit類的常用函數(shù),GetDlgItem()函數(shù),如果不希望將控件綁定到變量,也可以使用GetDlgIt
5、em()函數(shù)獲取指定控件的句柄,然后再設置控件的屬性。GetDlgItem()的函數(shù)原型如下: CWnd* GetDlgItem( int nID ) const; 參數(shù)nID表示控件的ID,返回結果為CWnd*類型的控件句柄。使用CWnd類的一些成員函,3.2.3 按鈕控件,按鈕控件的重要屬性,添加按鈕控件的事件處理代碼,【例3.1】,在對話框中添加一個按鈕,參照上面介紹的方法為該按鈕添加單擊事件的處理程序,代碼如下: void CMfcAppDlg:OnBnClickedButton1() AfxMessageBox(ClickMe); 要使上面程序通過編譯,需要修改項目默認的字符集。在V
6、isual Studio的系統(tǒng)菜單中選擇“項目”/“屬性”,打開項目屬性對話框。在左側(cè)的列表中選擇“配置屬性”/“常規(guī)”,在右側(cè)將字符集修改為“未設置”,如圖3.23所示。配置完成后,單擊“確定”按鈕。,3.2.4 單選按鈕控件,單選按鈕控件的重要屬性,為單選按鈕添加變量,只有將Group屬性設置為True的單選按鈕控件才能添加成員變量,否則單選按鈕控件的ID將不會出現(xiàn)在控件ID組合框。,3.2.5 復選框控件,3.2.6 列表框控件,列表框控件的重要屬性,為列表框添加變量,CListBox類的常用函數(shù),3.2.7 組合框控件,組合框框控件的重要屬性,為組合框添加變量,CComboBox類的常
7、用函數(shù),3.2.8 IP地址框控件,CIPAddressCtrl類的常用函數(shù),3.2.9 列表控件,列表控件的重要屬性,為列表控件添加變量,CListCtrl類的常用函數(shù),3.2.10 CImageList類,3.2.11 常用控件應用示例,【例3.2】設計一個MFC對話框,用于輸入計算機的基本信息,其中包含上面介紹的一些常用控件,如圖3.35所示。,例3.2的對話框中使用的控件及其對應的變量,1初始化對話框,在啟動對話框時,執(zhí)行OnInitDialog()函數(shù),用于設置各控件的初始值,代碼如下: BOOL CMfcNormalControlDlg:OnInitDialog() CDialog
8、:OnInitDialog(); / 選擇設備類型為“計算機” m_DevType.SetCheck(1); / 添加可供選擇的部門 m_Dept.InsertString(0, 人事部); m_Dept.InsertString(1, 財務部); m_Dept.InsertString(2, 銷售部); / 默認選擇人事部 m_Dept.SetCurSel(0); return TRUE; / 除非將焦點設置到控件,否則返回TRUE ,2添加設備,當用戶單擊“添加”按鈕時,執(zhí)行OnBnClickedButtonAdd()函數(shù),代碼如下: void CMfcNormalControlDlg:O
9、nBnClickedButtonAdd() / 檢查數(shù)據(jù)有效性 UpdateData(TRUE); if(m_DevName = ) AfxMessageBox(請輸入部門名稱。); return; / IP地址 CString DevIP; m_DevIP.GetWindowTextA(DevIP);/ 獲取CIPAddressCtrl控件的值 if(DevIP = 0.0.0.0) AfxMessageBox(請輸入IP地址。); return; ,2添加設備,/ 是否登記 CString IsRegister = 否; if(m_Register) IsRegister = 是; / 部
10、門 CString DeptName; m_Dept.GetWindowTextA(DeptName);/ 獲取組合框控件的值 / 設備類型 int iType = m_DevType.GetCheck();/ 獲取單選按鈕控件的值 CString DevType; switch(iType) case 1: DevType = 計算機; break; case 2: DevType = 服務器; break; case 3: DevType = 網(wǎng)絡設備; break; case 4: DevType = 其他; break; char s1000; sprintf(s, 部門名稱: %s;
11、 IP地址: %s; 所屬部門: %s; 是否登記: %s; 設備類型: %s, m_DevName.GetBuffer(), DevIP.GetBuffer(), DeptName.GetBuffer(), IsRegister.GetBuffer(), DevType.GetBuffer(); / 添加到列表框中 m_DevList.InsertString(0, s); UpdateData(FALSE); ,3.3 在對話框中使用菜單,3.3.1 創(chuàng)建和設計菜單 3.3.2 在對話框中添加菜單 3.3.3 菜單項的消息處理函數(shù),3.3.1 創(chuàng)建和設計菜單,打開資源管理器,右鍵單擊“.rc”(例如,如果項目名為MfcApp,則右鍵單擊MfcApp.rc項),在彈出菜單中選擇“添加資源”,打開“添加資源”對話框,如圖3.36所示。,菜單編輯器,在此處可以添加新菜單項,菜單項的屬性,3.3.2 在對話框中添加菜單,打開對話框設計界面,在屬性窗口的Menu選項中可以選擇對話框中使用的菜單,如圖3.38所示。運行項目,打開對話框,如圖3.39所示。,3.3.3 菜單項的消息處理函數(shù),菜單項包含下面兩個重要的消息: COMMAND,當用戶單擊菜單時觸發(fā)該消息,添加該菜單項的COMMAND消息處理函數(shù)就可以處理單擊操作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年VIVO手機項目籌資方案
- 電子技術基礎復習題+答案
- 養(yǎng)老院老人生活設施維修人員培訓制度
- 《家畜的接近與保定》課件
- 《高齡教育需求評估》課件
- 《腦卒中康復的宗旨》課件
- 2024年桶裝水原水采購與供應合作協(xié)議范本3篇
- 2024年度企業(yè)入駐文化娛樂孵化基地合作協(xié)議3篇
- 《錢的功能和類型》課件
- 《RSD觸發(fā)器研究》課件
- 高中英語新課標新增詞匯匯總1
- GB/T 31586.2-2015防護涂料體系對鋼結構的防腐蝕保護涂層附著力/內(nèi)聚力(破壞強度)的評定和驗收準則第2部分:劃格試驗和劃叉試驗
- GB/T 20734-2006液化天然氣汽車專用裝置安裝要求
- GB/T 20197-2006降解塑料的定義、分類、標志和降解性能要求
- GB/T 15561-2008靜態(tài)電子軌道衡
- GB/T 1412-2005球墨鑄鐵用生鐵
- 軍事理論論述題
- 寧德時代財務報表分析
- 門式起重機安裝施工方案
- 高中語文語法知識課件
- 《國際法》形成性考核參考資料廣東開放大學2022年10月題庫
評論
0/150
提交評論