資源描述:
《《對話框和標(biāo)準(zhǔn)控件》PPT課件》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第四章對話框和標(biāo)準(zhǔn)控件1本章內(nèi)容對話框概述使用對話框標(biāo)準(zhǔn)控件通用對話框公共控件(略)2一、對話框概述對話框是Windows應(yīng)用程序中常用的I/O界面,是實(shí)現(xiàn)人機(jī)交互的容器型窗口,對話框總會包含一些功能性控件。控件是嵌入在對話框或其他窗口內(nèi)的子窗口,用于實(shí)際完成數(shù)據(jù)或信息的I/O。對話框的存在方式有兩種:一是作為獨(dú)立的程序主窗口出現(xiàn)和使用;二是作為普通窗口類程序的彈出式子窗口實(shí)現(xiàn)其人機(jī)交互功能。從狀態(tài)上區(qū)分,對話框分為“模式對話框”和“非模式對話框”兩種。31、MFC的CDialog類CDialog類的成員
2、函數(shù)有:CDialog()——構(gòu)造函數(shù),創(chuàng)建對話框?qū)ο驞oModal()——激活并顯示模式對話框Create()——創(chuàng)建非模式對話框OnOk()與OnCancel()——確定與取消按鈕的處理函數(shù)OnInitDialog()—WM_INITDIALOG的消息處理函數(shù)EndDialog()——關(guān)閉模式對話框的函數(shù)4對話框要實(shí)現(xiàn)人機(jī)交互,還必須使用CWnd類函數(shù):ShowWindow()——顯/隱對話框;DestroyWindow()——關(guān)閉銷毀對話框;UpdateData()——設(shè)置或獲取對話框控件的數(shù)據(jù)Ge
3、tWindowText()——獲取對話框窗口的標(biāo)題SetWindowText()——設(shè)定對話框窗口的標(biāo)題GetDlgItemText()——獲取對話框中控件的文本內(nèi)容SetDlgItemText()——設(shè)置對話框中控件的文本內(nèi)容GetDlgItem()——獲取控件或子窗口的指針,返回IDEnableWindow()——使能或禁用窗口52、MFC為對話框提供了DDX機(jī)制以此來自動實(shí)現(xiàn)控件與應(yīng)用程序之間的數(shù)據(jù)交換的,同時使用DDV機(jī)制實(shí)現(xiàn)數(shù)據(jù)合法性的自動驗證。DDX——全稱DialogDataExchange
4、;數(shù)據(jù)交換DDV——全稱DialogDataValidation;數(shù)據(jù)檢驗63、使用信息/消息對話框程序員在編程時可以直接調(diào)用,以下為函數(shù)原型:三個函數(shù)依次為:MFC全局函數(shù);API函數(shù);CWnd類的成員函數(shù)。AfxMessageBox()和::MessageBox()可以在任何地方使用,而第三種函數(shù)只能用于控件、對話框和窗口。lpText——表示要在對話框內(nèi)顯示的信息字串;hWnd表示對話框父窗口的指針,可為NULL;lpCaption——表示信息框的標(biāo)題;nType——表示對話框的圖標(biāo)與按鈕風(fēng)格;78
5、二、使用對話框編程時,對話框由資源模板和對話框類共同組成。1、創(chuàng)建和使用對話框的主要步驟創(chuàng)建對話框模板資源和相關(guān)控件;用類向?qū)?chuàng)建對話框類和與控件相關(guān)聯(lián)的成員變量和消息處理函數(shù);設(shè)計程序訪問接口來顯示對話框并獲取與控件相關(guān)聯(lián)的程序數(shù)據(jù)。9對話框在程序中的調(diào)用一般由菜單項來完成。由程序顯示對話框就需要調(diào)用菜單命令的消息處理函數(shù),加入如下通用型代碼:CMyDialogmyDlg;myDlg.DoModol();而要從對話框中獲取相關(guān)控件數(shù)據(jù)的方法是:CMyDialogmydlg;//當(dāng)對話框內(nèi)控件接受輸入并單
6、擊OK鍵后If(myDlg.DoModol()==IDOK){appVariableX=dlg.m_nXControlDataMember;……;}10對話框的基本工作流程112、創(chuàng)建和使用對話框?qū)嵗幹埔粋€在客戶區(qū)畫圓的應(yīng)用程序,要求用對話框來接受用戶鍵盤輸入的圓半徑參數(shù)。步驟(1)為視圖類聲明成員變量:UINTm_nViewRadius;(2)創(chuàng)建對話框模板(標(biāo)題:輸入半徑;ID缺省IDD_DIALOG1)(3)添加兩個控件:StaticControl:請輸入半徑;EditBox:IDC_EDIT_R
7、ADIUS。(4)雙擊對話框空白處,為其創(chuàng)建新類CRadiusDlg,并為其核心控件IDC_EDIT_RADIUS創(chuàng)建m_nRadius的UINT類型變量。12(5)在程序的“編輯”菜單中添加“輸入半徑(I)…”的菜單命令,并用類向?qū)上⒂成浜瘮?shù),加入如下定義代碼:CRadiusDlgdlg;Dlg.m_nRadius=100;//設(shè)置控件初值If(dlg.DoModal()==IDOK){m_nViewRadius=dlgm_nRadius;//接受并存儲編輯框內(nèi)的數(shù)據(jù)Invalidate();//
8、強(qiáng)制刷新視圖}(6)在視圖類的OnDraw()函數(shù)中加入畫圓代碼:pDC->Ellipse(90,90,m_nViewRadius,m_nViewRadius);(7)在視圖類中加入包含語句:#include“RadiusDlg.h”13三、標(biāo)準(zhǔn)控件1、控件概述Windows提供兩種控件:標(biāo)準(zhǔn)控件和公共控件。標(biāo)準(zhǔn)控件有:靜態(tài)控件、編輯框、按鈕、列表框、組合框和滾動條??蓾M足多數(shù)UI設(shè)計的要求。各控件的功能:靜態(tài)控件——用于提示