程序設(shè)計(jì)教程對(duì)話框設(shè)計(jì)和Windows常用控件_第1頁(yè)
程序設(shè)計(jì)教程對(duì)話框設(shè)計(jì)和Windows常用控件_第2頁(yè)
程序設(shè)計(jì)教程對(duì)話框設(shè)計(jì)和Windows常用控件_第3頁(yè)
程序設(shè)計(jì)教程對(duì)話框設(shè)計(jì)和Windows常用控件_第4頁(yè)
程序設(shè)計(jì)教程對(duì)話框設(shè)計(jì)和Windows常用控件_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1程序設(shè)計(jì)教程對(duì)話框設(shè)計(jì)和Windows常用控件2.對(duì)話框分類對(duì)話框的分類主要有以下兩種:模式(Model)對(duì)話框和非模式(Modeless)對(duì)話框。對(duì)于模式對(duì)話框,在對(duì)話框關(guān)閉之前,用戶無(wú)法在同一應(yīng)用程序的其他地方進(jìn)行工作,如MicrosoftWord中的“打開(kāi)文件”對(duì)話框。而對(duì)于非模式對(duì)話框,在它仍然保留在屏幕上的同時(shí),用戶可以在同一應(yīng)用程序的其他窗口中進(jìn)行工作,如MicrosoftWord中的“查找與替換”對(duì)話框,在對(duì)話框保留在屏幕的同時(shí),還可以進(jìn)行光標(biāo)的重定位及其他操作。第1頁(yè)/共63頁(yè)4.2創(chuàng)建對(duì)話框程序在VisualC++6.0中創(chuàng)建對(duì)話框應(yīng)用程序一般分為4個(gè)步驟:(1)利用資源編輯器創(chuàng)建一個(gè)對(duì)話框模板,加入需要的控件并設(shè)置對(duì)話框和控件的屬性。(2)利用ClassWizard創(chuàng)建與對(duì)話框資源對(duì)應(yīng)的CDialog的派生類。(3)編寫(xiě)創(chuàng)建對(duì)話框的代碼,通常在響應(yīng)某個(gè)菜單項(xiàng)或者工具欄按鈕時(shí)彈出對(duì)話框。(4)為對(duì)話框的控件添加響應(yīng)的消息處理。第2頁(yè)/共63頁(yè)4.2.1建立對(duì)話框程序框架在MFC應(yīng)用程序中添加對(duì)話框資源,通常按下列步驟進(jìn)行:(1)利用MFCAppWizard向?qū)蓡挝臋n(SDI)應(yīng)用程序DialogTest。選擇“插入”→“資源”命令,或使用Ctrl+R組合鍵打開(kāi)“插入資源”對(duì)話框。展開(kāi)資源列表中的“Dialog”項(xiàng),如圖4-1所示,“資源類型”列表中列出了各種類型的對(duì)話框資源。第3頁(yè)/共63頁(yè)第4頁(yè)/共63頁(yè)(2)單擊“新建”按鈕可以創(chuàng)建一個(gè)資源類型列表中指定類型的新資源;單擊“定制”按鈕可以創(chuàng)建資源類型列表中沒(méi)有的新類型的資源;單擊“導(dǎo)入”按鈕可以將外部已有的位圖、圖標(biāo)等資源添加到當(dāng)前應(yīng)用程序中。(3)修改對(duì)話框?qū)傩?。在?duì)話框模板的空白處右擊,從彈出的快捷菜單中選擇“屬性”命令,彈出如圖4-3的“對(duì)話屬性”對(duì)話框。第5頁(yè)/共63頁(yè)對(duì)話框的屬性有“常規(guī)”、“樣式”、“更多樣式”、“擴(kuò)展樣式”和“更多擴(kuò)展樣式”5個(gè)部分,這里只介紹最常用的“常規(guī)”屬性,其中各個(gè)屬性說(shuō)明如表4-2所示。根據(jù)需要設(shè)置各項(xiàng)屬性即可。第6頁(yè)/共63頁(yè)4.2.2創(chuàng)建對(duì)話框類在創(chuàng)建了對(duì)話框模板后,就可以利用ClassWizard來(lái)創(chuàng)建從CDialog派生且連接到對(duì)話框模板的對(duì)話框類了,并可以添加與控件相關(guān)聯(lián)的成員變量。需要注意的是,無(wú)論在創(chuàng)建對(duì)話框類之前還是之后,都可以向?qū)υ捒蛸Y源添加控件,但只有在創(chuàng)建對(duì)話框類之后,才可以為對(duì)話框添加與控件關(guān)聯(lián)的成員變量和消息處理函數(shù)。第7頁(yè)/共63頁(yè)4.2.3了解對(duì)話框常用函數(shù)CDialog類是對(duì)話框的基類,用戶在程序中創(chuàng)建的對(duì)話框類一般都是CDialog類的派生類。CDialog類從CWnd類派生而來(lái),所以它繼承了CWnd類的成員函數(shù),用戶在編寫(xiě)對(duì)話框程序時(shí)除了使用CDialog類的成員函數(shù)之外,還可以調(diào)用CWnd類的一些成員函數(shù)進(jìn)行對(duì)話框的管理。對(duì)話框常用的成員函數(shù)主要有以下幾個(gè):第8頁(yè)/共63頁(yè)1.DoModal該方法用于創(chuàng)建并顯示一個(gè)模式對(duì)話框,其原型如下:

virtualintDoModal();返回值:該方法返回一個(gè)整數(shù)值,該數(shù)值可以應(yīng)用于EndDialog方法。如果返回值為-1,則表示沒(méi)有創(chuàng)建對(duì)話框;如果為IDABORT,則表示有其他錯(cuò)誤發(fā)生。2.Create該方法從對(duì)話框模板中創(chuàng)建一個(gè)對(duì)話框資源,其原型如下:BOOLCreate(LPCTSTRlpszTemplateName,CWnd*pParentWnd=NULL);

BOOLCreate(UINTnIDTemplate,CWnd*pParentWnd=NULL);3.EndDialog該函數(shù)用于退出一個(gè)模式對(duì)話框,返回nResult作為DoModal的返回值,其原型如下:

voidEndDialog(intnResult);第9頁(yè)/共63頁(yè)4.OnCancel該函數(shù)在單擊對(duì)話框中的“Cancel”按鈕或按Esc鍵時(shí)由框架調(diào)用,其原型如下:

virtualvoidOnCancel();5.OnInitDialog該重載函數(shù)用于響應(yīng)WM_INTTDIALOG消息,對(duì)對(duì)話框進(jìn)行初始化處理,其原型如下:

virtualBOOLOnInitDialog();返回值:返回非零值,輸入焦點(diǎn)為第一個(gè)控件。若程序已顯式地設(shè)置焦點(diǎn)到某個(gè)控件處,則返回零。6.OnOK單擊ID為IDOK的按鈕時(shí)調(diào)用的函數(shù),關(guān)閉對(duì)話框,并返回IDOK,其原型如下:

virtualvoidOnOK();第10頁(yè)/共63頁(yè)4.3使用Windows常用控件為了與用戶進(jìn)行直觀、方便、快捷的交互,Windows操作系統(tǒng)提供了各種控件。控件(Control)是一種子窗口,應(yīng)用程序用它來(lái)與其他窗口進(jìn)行簡(jiǎn)單的交互。一般情況下,在使用對(duì)話框的時(shí)候都需要加上對(duì)話框控件,如編輯框、組合框、按鈕和單選按鈕等。第11頁(yè)/共63頁(yè)4.3.1Windows常用控件介紹1.靜態(tài)文本控件(CStatic)靜態(tài)文本控件用來(lái)在屏幕上顯示字符串,一般不響應(yīng)消息,在運(yùn)行過(guò)程中不和用戶發(fā)生任何關(guān)系。當(dāng)把矩形范圍定位好之后,就可以直接輸入文本。該控件的一個(gè)常用屬性是標(biāo)題(Caption)屬性,用來(lái)設(shè)置在控件中顯示的文本。在很多情況下,對(duì)話框中的一些說(shuō)明性質(zhì)的文字均可以用靜態(tài)文本進(jìn)行輸出。管理靜態(tài)文本控件的MFC類是CStatic類。第12頁(yè)/共63頁(yè)2.編輯框控件(CEdit)編輯框控件是一個(gè)讓用戶從鍵盤輸入和編輯文字的矩形窗口。同時(shí),用戶也可以使用編輯框控件來(lái)編輯或修改簡(jiǎn)單的文本文件。編輯框一般和靜態(tài)文本控件一起使用,當(dāng)它獲得焦點(diǎn)時(shí),框內(nèi)會(huì)出現(xiàn)一個(gè)閃動(dòng)的插入符。3.按鈕控件(CEdit)在Windows中按鈕是隨處可見(jiàn)的,其中常見(jiàn)的按鈕有3種類型:按鍵按鈕、單選按鈕和復(fù)選框。按鍵按鈕通??梢粤⒓串a(chǎn)生某個(gè)動(dòng)作,執(zhí)行某個(gè)命令,因此也常被稱為命令按鈕。單選按鈕的外觀是一個(gè)圓圈,當(dāng)它被選中時(shí),單選按鈕中就標(biāo)上一個(gè)黑點(diǎn)。復(fù)選框的外觀是一個(gè)空心方框,當(dāng)它被選中時(shí),復(fù)選框中就加上一個(gè)對(duì)勾標(biāo)記,通常復(fù)選框只有選中和沒(méi)有選中兩種狀態(tài)。第13頁(yè)/共63頁(yè)4.列表框控件(CListBox)列表框是一種輸入控制,它可以使用戶從所列的表項(xiàng)中進(jìn)行選擇。用戶可以在其中選擇一個(gè)或多個(gè)項(xiàng),這與單選按鈕和復(fù)選框的功能有些相近,但不同的是,列表框中項(xiàng)的數(shù)目是靈活變化的,程序運(yùn)行時(shí)可往列表框中添加或刪除某些項(xiàng)。并且,當(dāng)列表框中項(xiàng)的數(shù)目較多不能一次全部顯示時(shí),還可以通過(guò)滾動(dòng)條來(lái)拓展顯示范圍。第14頁(yè)/共63頁(yè)5.組合框控件組合框是列表框和編輯框的組合。在組合框中,用戶除了可以在列表中對(duì)已經(jīng)存在的選項(xiàng)進(jìn)行選擇外,還可以輸入新的選項(xiàng)。Windows提供了3種類型的組合框:簡(jiǎn)單組合框(Simple)、下拉式組合框(Dropdown)和下拉式列表框(DropList)。簡(jiǎn)單組合框和下拉式組合框都含有列表框和編輯框控件,只不過(guò)簡(jiǎn)單組合框的列表框不是下拉式的,跟正常的列表框一樣。下拉式列表框則雖然有下拉式的列表,但卻沒(méi)有文字編輯功能。第15頁(yè)/共63頁(yè)6.滾動(dòng)條控件滾動(dòng)條是窗口中常見(jiàn)的對(duì)象,當(dāng)窗口客戶區(qū)中要顯示比其自身大的對(duì)象時(shí),滾動(dòng)條便非常有用了。這種滾動(dòng)條與窗口一同創(chuàng)建,位于窗口用戶區(qū)旁的非用戶區(qū),用來(lái)擴(kuò)展用戶區(qū)的顯示范圍,它被稱為標(biāo)準(zhǔn)滾動(dòng)條。另外,還有一種作為控件的滾動(dòng)條,這是一個(gè)獨(dú)立的窗口,具有直接的輸入焦點(diǎn),使用這種滾動(dòng)條的目的未必是滾動(dòng)顯示窗口內(nèi)容。第16頁(yè)/共63頁(yè)4.3.2添加Windows控件控件的創(chuàng)建方法有兩種,一種是在對(duì)話框中指定控件,即將控件的父窗口指定為對(duì)話框,當(dāng)程序啟動(dòng)該對(duì)話框時(shí),Windows系統(tǒng)自動(dòng)為對(duì)話框創(chuàng)建控件,當(dāng)關(guān)閉對(duì)話框時(shí),Windows所創(chuàng)建的控件也隨之被撤銷。另一種是將控件看作是任意窗口的子窗口,通過(guò)調(diào)用相應(yīng)的創(chuàng)建函數(shù)來(lái)實(shí)現(xiàn)。第17頁(yè)/共63頁(yè)1.通過(guò)資源編輯器添加控件打開(kāi)對(duì)話框資源編輯器彈出如圖48所示的控件工具欄之后,就可以方便地在對(duì)話框中添加各種控件了。(1)單擊添加:在控件工具欄上單擊要添加的控件后,將鼠標(biāo)移動(dòng)到對(duì)話框模板上,此時(shí)鼠標(biāo)光標(biāo)變成了“+”形狀,在對(duì)話框上再次單擊鼠標(biāo),控件就添加到對(duì)話框模板上了。(2)拖動(dòng)添加:拖動(dòng)要添加的控件到對(duì)話框模板上,然后釋放鼠標(biāo),也可以添加控件。第18頁(yè)/共63頁(yè)2.調(diào)用創(chuàng)建函數(shù)添加控件如果希望在程序的運(yùn)行過(guò)程中在對(duì)話框中添加控件,一般需要先聲明一個(gè)MFC控件類的對(duì)象,然后調(diào)用Create()函數(shù)和其他成員函數(shù)顯示控件和設(shè)置屬性。Create()是CWnd的成員函數(shù),其原型如下:virtualBOOLCreate(LPCTSTRlpszClassName,LPCTSTRlpszWindowName,DWORDdwStyle,ConstRECT&rect,CWnd*pParentWnd,UINTnID,CCreateContext*pContext=NULL);第19頁(yè)/共63頁(yè)4.3.3修改Windows控件屬性1.控件ID

每個(gè)控件都有一個(gè)ID標(biāo)識(shí),系統(tǒng)給添加的每個(gè)控件指定了一個(gè)默認(rèn)的ID標(biāo)識(shí),用戶可以根據(jù)需要對(duì)其進(jìn)行修改,以便更清楚地表達(dá)出控件的作用??丶蘒D以IDC_開(kāi)頭,命名ID時(shí)最好包括控件類型,例如,IDC_BUTTON前綴用于按鈕,IDC_EDIT前綴用于編輯框。ID可以由字母、數(shù)字及下劃線字符組成,且必須以字母或下劃線字符開(kāi)頭。MFC約定ID中的字母全部大寫(xiě)。第20頁(yè)/共63頁(yè)2.標(biāo)題屬性靜態(tài)文本、組框、命令按鈕以及單選按鈕等控件都可以顯示標(biāo)題,用來(lái)對(duì)控件進(jìn)行文字說(shuō)明??丶?biāo)題中的字符“&”使緊跟其后的字符附帶下劃線,按Alt+下劃線上的字符將啟動(dòng)該控件。若控件是一個(gè)單選按鈕,則按Alt+下劃線上的字符將選擇該按鈕;若控件是命令按鈕,則將激活按鈕命令;若控件是一個(gè)靜態(tài)文本,則將激活緊隨其后的下一個(gè)控件。第21頁(yè)/共63頁(yè)3.制表站屬性該屬性控制利用鍵盤Tab鍵獲取對(duì)話框窗口的操作焦點(diǎn),獲得焦點(diǎn)的控件能夠響應(yīng)當(dāng)前的鍵盤輸入??丶@得焦點(diǎn)后,按Enter鍵就執(zhí)行控件所對(duì)應(yīng)的命令。任何對(duì)話框中都只能由一個(gè)控件擁有焦點(diǎn)。第22頁(yè)/共63頁(yè)4.組屬性組屬性用來(lái)對(duì)一組控件進(jìn)行編組,用戶可以用鍵盤方向鍵在該組控件內(nèi)切換焦點(diǎn)。組屬性常用于單選按鈕和復(fù)選框,在同一組內(nèi)的單選按鈕具有互斥的特性,即在這些單選按鈕中只能有一個(gè)是選中的。如果一個(gè)控件具有Group屬性,則這個(gè)控件以及按Tab順序緊隨其后的所有控件都屬于一組,直到遇到另一個(gè)有Group屬性的控件為止。第23頁(yè)/共63頁(yè)4.4對(duì)控件進(jìn)行排版在實(shí)際編程中,有時(shí)會(huì)根據(jù)需要在對(duì)話框中加入多個(gè)控件,這時(shí)就需要對(duì)控件進(jìn)行適當(dāng)?shù)呐虐嬉允箤?duì)話框更加美觀??丶季挚梢岳萌鐖D4-11所示的布局菜單,或者利用如圖4-12所示的控件布局工具欄來(lái)實(shí)現(xiàn)。要注意的是,布局菜單和布局工具欄只有在對(duì)對(duì)話框資源進(jìn)行編輯時(shí)才有效,對(duì)其他資源進(jìn)行編輯時(shí)無(wú)效。第24頁(yè)/共63頁(yè)第25頁(yè)/共63頁(yè)4.4.1設(shè)置Windows控件的大小如果要設(shè)置控件的大小,可以利用控件周圍的尺寸調(diào)整點(diǎn)實(shí)現(xiàn),如圖4-13所示,可看到控件周圍有8個(gè)調(diào)整點(diǎn)。特別地,對(duì)于靜態(tài)文本控件,當(dāng)輸入標(biāo)題內(nèi)容時(shí),控件的大小會(huì)自動(dòng)改變。調(diào)整控件大小的具體方法如下:第26頁(yè)/共63頁(yè)第27頁(yè)/共63頁(yè)(1)單擊要調(diào)整的控件并將其選中,此時(shí)控件四周顯示出尺寸調(diào)整點(diǎn)。(2)把鼠標(biāo)光標(biāo)放在調(diào)整點(diǎn)上,當(dāng)鼠標(biāo)變?yōu)殡p向箭頭時(shí),水平或垂直拖動(dòng)鼠標(biāo)以改變控件的寬度或者高度。如果希望能等比例地改變控件的寬度和高度,可以把鼠標(biāo)光標(biāo)放在右下腳的調(diào)整點(diǎn)位置進(jìn)行拖動(dòng)。(3)調(diào)整為滿意大小時(shí)停止拖動(dòng)即可。第28頁(yè)/共63頁(yè)4.4.2設(shè)置Windows控件的對(duì)齊模式為了使程界面更加美觀,有時(shí)需要對(duì)多個(gè)控件進(jìn)行對(duì)齊排列,此時(shí)同樣可以使用布局菜單或者控件布局工具欄來(lái)實(shí)現(xiàn),具體方法如下:(1)選中需要對(duì)齊的多個(gè)控件。(2)選擇“排列”菜單的下一級(jí)菜單中的選項(xiàng)進(jìn)行設(shè)置,可以進(jìn)行的對(duì)齊方式有居左對(duì)齊、居右對(duì)齊、頂端對(duì)齊、底部對(duì)齊、水平居中和垂直居中。也可以使用控件布局工具欄中的工具按鈕實(shí)現(xiàn)相同的功能。第29頁(yè)/共63頁(yè)提示:當(dāng)選中多個(gè)控件進(jìn)行對(duì)齊設(shè)置時(shí),在“排列”菜單的下一級(jí)菜單子菜單中選擇居左對(duì)齊、居右對(duì)齊、頂端對(duì)齊或者底部對(duì)齊后,所有控件都按照選中控件中最先添加的控件進(jìn)行調(diào)整。當(dāng)選擇水平居中或者垂直居中時(shí),是指所有選中的控件相對(duì)于對(duì)話框水平居中或者垂直居中。第30頁(yè)/共63頁(yè)4.5模式對(duì)話框和非模式對(duì)話框?qū)υ捒蛑饕譃槟J綄?duì)話框和非模式對(duì)話框兩類,它們?cè)诔绦蛑械膽?yīng)用非常廣泛,利用這兩種對(duì)話框可以方便地實(shí)現(xiàn)信息的交互。第31頁(yè)/共63頁(yè)4.5.1模式對(duì)話框和非模式對(duì)話框概述模式對(duì)話框是最常用的一類對(duì)話框,用戶可以通過(guò)選擇菜單選項(xiàng)或單擊工具按鈕打開(kāi)一個(gè)對(duì)話框,然后進(jìn)行數(shù)據(jù)的輸入操作。對(duì)于模式對(duì)話框的編程可以按以下步驟進(jìn)行。第32頁(yè)/共63頁(yè)(1)根據(jù)要求創(chuàng)建對(duì)話框模板。(2)使用ClassWizard創(chuàng)建對(duì)話框類并進(jìn)行各類事件函數(shù)的代碼編寫(xiě)。(3)對(duì)視圖類進(jìn)行編輯,以便對(duì)話框能夠被激活。在所編寫(xiě)的代碼中,首先創(chuàng)建對(duì)話框類的對(duì)象,然后通過(guò)該對(duì)象調(diào)用對(duì)話框類成員函數(shù)DoModal()。只有當(dāng)用戶退出對(duì)話框窗口時(shí),DoModal函數(shù)才能返回。第33頁(yè)/共63頁(yè)4.5.2創(chuàng)建模式對(duì)話框創(chuàng)建模式對(duì)話框需要調(diào)用CDialog類的成員函數(shù)DoModal(),該函數(shù)的功能就是創(chuàng)建并顯示一個(gè)模式對(duì)話框,其返回值將作為CDialog類的另一個(gè)成員函數(shù)EndDialog的參數(shù),后者的功能是關(guān)閉模式對(duì)話框。下面通過(guò)一個(gè)例子來(lái)看一下模式對(duì)話框的創(chuàng)建過(guò)程。第34頁(yè)/共63頁(yè)voidCMyboleView::OnDialogTest(){CTestDlgdlgdlg.DoModal();}上述代碼中首先定義了一個(gè)對(duì)話框?qū)ο骴lg,然后調(diào)用DoModal()函數(shù)以產(chǎn)生一個(gè)模式對(duì)話框。需要注意的是,由于視類中并不知道這個(gè)CTestDlg對(duì)話框是什么樣的數(shù)據(jù)類型,因此應(yīng)該在視類的源文件中包含這個(gè)CTestDlg類的頭文件,即在視類的源文件中加入如下語(yǔ)句:#include"testdlg.h"第35頁(yè)/共63頁(yè)4.5.3創(chuàng)建非模式對(duì)話框程序相對(duì)于模式對(duì)話框,創(chuàng)建非模式對(duì)話框相對(duì)復(fù)雜,需要調(diào)用Create()和ShowWindow()函數(shù)。Create()函數(shù)具有以下兩種形式的聲明:BOOLCDialog::Create(LPCTSTRlpszTemplateName,CWnd*pParent=NULL);BOOLCDialog::Create(UINTnIDTemplate,CWnd*pParentWnd=NULL);第36頁(yè)/共63頁(yè)利用Create()函數(shù)創(chuàng)建非模態(tài)對(duì)話框后,還需要調(diào)用ShowWindow()函數(shù)將這個(gè)對(duì)話框顯示出來(lái),其函數(shù)原型如下:BOOLCDialog::ShowWindow(SW_SHOW);第37頁(yè)/共63頁(yè)如果要銷毀對(duì)話框?qū)ο?,可以通過(guò)以下兩種方法實(shí)現(xiàn):(1)在對(duì)話框退出時(shí)銷毀對(duì)象。重載OnOK與OnCancel函數(shù),在函數(shù)中調(diào)用父類的同名函數(shù),然后調(diào)用DestroyWindow()函數(shù)強(qiáng)制銷毀窗口,在對(duì)話框中映射WM_DESTROY消息,在消息處理函數(shù)中調(diào)用deletethis,強(qiáng)行刪除自身對(duì)象。(2)通過(guò)向父窗口發(fā)送消息,要求其他窗口對(duì)其進(jìn)行銷毀。首先需要定義一個(gè)消息用于進(jìn)行通知,然后在對(duì)話框中映射WM_DESTROY消息,在消息處理函數(shù)中調(diào)用消息發(fā)送函數(shù)通知其他窗口。在接收消息的窗口中利用ON_MESSAGE映射處理消息的函數(shù),并在消息處理函數(shù)中刪除對(duì)話框?qū)ο?。?8頁(yè)/共63頁(yè)4.6Windows通用對(duì)話框在使用Windows的過(guò)程中,用戶經(jīng)常會(huì)遇到一些常用的有特定用途的對(duì)話框,如文件打開(kāi)對(duì)話框、設(shè)置字體對(duì)話框等。這樣的對(duì)話框使用非常頻繁,為了使用戶不必自己設(shè)計(jì)該類型的對(duì)話框,Windows提供了一組標(biāo)準(zhǔn)用戶界面對(duì)話框,它們都由MFC庫(kù)中相應(yīng)的類來(lái)支持,可以用來(lái)執(zhí)行各種標(biāo)準(zhǔn)操作,如選擇文件、指定字體和選擇顏色等。第39頁(yè)/共63頁(yè)4.6.1CFontDialog對(duì)話框CFontDialog類封裝了標(biāo)準(zhǔn)的字體對(duì)話框,使用戶可以從系統(tǒng)安裝的字體列表中選擇要用的字體,圖4-16即是一個(gè)“字體”對(duì)話框?!白煮w”對(duì)話框的創(chuàng)建與一般的對(duì)話框基本一樣,首先是構(gòu)建一個(gè)CFontDialog對(duì)象,然后調(diào)用CFontDialog::DoModal()函數(shù)來(lái)啟動(dòng)對(duì)話框。第40頁(yè)/共63頁(yè)第41頁(yè)/共63頁(yè)CFontDialog類的構(gòu)造函數(shù)如下:CFontDialog(LPLOGFONTlplfInitial=NULL,DWORDdwFlags=CF_EFFECTS|CF_SCREENFONTS,CDC*pdcPrinter=NULL,CWnd*pParentWnd=NULL);第42頁(yè)/共63頁(yè)4.6.2CFileDialog對(duì)話框很多Windows應(yīng)用程序都具有打開(kāi)文件和文件另存為功能,這兩項(xiàng)功能都需要使用對(duì)話框以獲取要打開(kāi)的文件名或欲保存的文件名。CFileDialog類允許編程人員在程序中嵌入通用文件對(duì)話框,以實(shí)現(xiàn)Windows標(biāo)準(zhǔn)的“打開(kāi)”和“另存為”對(duì)話框。第43頁(yè)/共63頁(yè)CFileDialog類的構(gòu)造函數(shù)如下:CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL)第44頁(yè)/共63頁(yè)4.6.3CColorDialog對(duì)話框CColorDialog類用于實(shí)現(xiàn)顏色通用對(duì)話框,使用戶可以從顏色列表中選擇要用的顏色。CColorDialog類的構(gòu)造函數(shù)的格式為:CColorDialog(COLORREFclrInit=0,DWORDdwFlags=0,CWnd*pParentWnd=NULL);顯示顏色對(duì)話框的方法同顯示其他通用對(duì)話框一樣,都是先定義對(duì)象,然后調(diào)用DoModal()函數(shù),根據(jù)DoModal()函數(shù)返回的是IDOK還是IDCANCEL可知道用戶是否確認(rèn)了對(duì)顏色的選擇。DoModal()函數(shù)返回后,調(diào)用CColorDialog::GetColor()方法可以返回一個(gè)COLORREF類型的結(jié)果來(lái)指示在對(duì)話框中選擇的顏色。除此之外,也可以利用CColorDialog類中類型為CHOOSECOLOR的成員變量m_cc獲取選擇的顏色值。第45頁(yè)/共63頁(yè)4.6.4CPrintDialog對(duì)話框CPrintDialog類支持Print(打?。┖蚉rintSetup(打印設(shè)置)對(duì)話框,通過(guò)這兩個(gè)對(duì)話框用戶可以進(jìn)行與打印有關(guān)的操作。打印設(shè)置允許用戶指定打印時(shí)的特殊設(shè)置,并將自動(dòng)處理安裝在用戶系統(tǒng)上的打印機(jī)特殊項(xiàng)。第46頁(yè)/共63頁(yè)CPrintDialog類的構(gòu)造函數(shù)如下所示:CPrintDialog(BOOLbPrintSetupOnly,DWORDdwFlags=PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_NOPAGENUMS|PD_HIDEPRINTTOFILE|PD_NOSELECTION,CWnd*pParentWnd=NULL);第47頁(yè)/共63頁(yè)4.6.5CFindReplaceDialog對(duì)話框CFindReplaceDialog類用于實(shí)現(xiàn)Find(查找)和Replace(替換)對(duì)話框。創(chuàng)建的對(duì)話框僅僅提供了標(biāo)準(zhǔn)接口,它允許輸入待查找和替換的字符串,而真正的查找和替換功能則需要程序員自己來(lái)實(shí)現(xiàn)。與其他通用對(duì)話框不同的是,查找和替換對(duì)話框是非模式的,因此,對(duì)該類的使用要按照非模式對(duì)話框進(jìn)行。第48頁(yè)/共63頁(yè)由于“查找和替換”對(duì)話框是非模式對(duì)話框,它的創(chuàng)建方式與其他4類公用對(duì)話框不同。CFindReplaceDialog對(duì)象是用new操作符在堆中創(chuàng)建的,而不是像普通對(duì)話框那樣以變量的形式創(chuàng)建。要啟動(dòng)“查找和替換”對(duì)話框,應(yīng)該調(diào)用CFindReplaceDialog::Create()函數(shù),而不是調(diào)用DoModal()函數(shù)。Create()函數(shù)的聲明如下:BOOLCreate(BOOLbFindDialogOnly,LPCTSTRlpszFindWhat,LPCTSTRlpszReplaceWith=NULL,DWORDdwFlags=FR_DOWN,CWnd*pParentWnd=NULL);第49頁(yè)/共63頁(yè)CFindReplaceDialog類只提供了一個(gè)界面,它并不會(huì)自動(dòng)實(shí)現(xiàn)搜索和替換功能。該類使用了一種特殊的通知機(jī)制,當(dāng)用戶按下了操作的按鈕后,它會(huì)向父窗口發(fā)送一個(gè)通知消息,父窗口應(yīng)在該消息的消息處理函數(shù)中實(shí)現(xiàn)搜索和替換。CFindReplaceDialog類提供了一組成員函數(shù)用來(lái)獲得與用戶操作有關(guān)的信息,如表4-12所示,這組函數(shù)一般應(yīng)在通知消息處理函數(shù)中調(diào)用。第50頁(yè)/共63頁(yè)第51頁(yè)/共63頁(yè)4.7編程實(shí)例——對(duì)話框和控件使用綜合實(shí)例1.編程要求建立一單文檔應(yīng)用程序,運(yùn)行該程序時(shí)首先出現(xiàn)登錄對(duì)話框,輸入的用戶名和密碼正確后方可進(jìn)入程序運(yùn)行界面。為程序添加“控件演示”主菜單,并為其添加“按鈕示例”、“列表框示例”兩個(gè)子菜單項(xiàng)。編寫(xiě)兩個(gè)子菜單項(xiàng)的消息處理函數(shù),使“按鈕示例”演示如何使用單選按鈕控制圖片變換,“列表框示例”演示如何使用列表框選擇不同的控件選項(xiàng),然后動(dòng)態(tài)生成并顯示。第52頁(yè)/共63頁(yè)2.編程實(shí)現(xiàn)(1)新建SDI項(xiàng)目。啟動(dòng)MicrosoftVisualC++6.0,單擊“文件”→“新建”命令,在彈出的“新建”對(duì)話框中切換到“工程”選項(xiàng)卡,并選擇“MFCAppWizard[exe]”選項(xiàng),在工程名稱文本框中輸入“DialogControl”,然后單擊“確定”按鈕。在彈出的對(duì)話框中選擇“單文檔”單選按鈕,其他采取默認(rèn)設(shè)置,然后單擊“下一步”按鈕。以后設(shè)置均采用向?qū)J(rèn)設(shè)置,直至完成。第53頁(yè)/共63頁(yè)(2)添加菜單。展開(kāi)工作區(qū)的ResourceView頁(yè)面下的Menu文件夾,雙擊IDR_MAINFRAME,然后雙擊彈出窗口中的主菜單上的虛線框,彈出“菜單項(xiàng)目屬性”對(duì)話框,設(shè)置主菜單,標(biāo)題設(shè)為“控件演示”。此時(shí),選中“彈出”復(fù)選框表示其有下拉菜單。雙擊其下拉菜單上的虛線框,添加兩個(gè)子菜單,標(biāo)題分別為“按鈕示例”和“組合框示例”,ID分別是“ID_BUTTON_TEST”和“ID_COMBO_TEST”。第54頁(yè)/共63頁(yè)(3)添加3個(gè)對(duì)話框資源。右擊Dialog文件夾,在彈出的快捷菜單中選擇“插入dialog”命令。在彈出的對(duì)話框資源上右擊并選擇“屬性”命令。在彈出的“對(duì)話屬性”對(duì)話框中設(shè)置其ID為“IDD_IDENTITY”,標(biāo)題為“身份驗(yàn)證”。用同樣的方法創(chuàng)建“按鈕測(cè)試”和“組合框測(cè)試”對(duì)話框,其ID分別為“IDD_BUTTONTEST”和“IDD_COMBOTEST”。第55頁(yè)/共63頁(yè)(4)為對(duì)話框添加類。以“身份驗(yàn)證”對(duì)話框?yàn)槔?,選中該對(duì)話框,按Ctrl+W組合鍵,彈出“AddingaClass”對(duì)話框,單擊“OK”按鈕,在彈出的“newclass”對(duì)話框中設(shè)置其類名為“CDlgIdentity”。使用同樣的方法為“按鈕測(cè)試”和“組合框測(cè)試”對(duì)話框添加類“CDlg

溫馨提示

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

評(píng)論

0/150

提交評(píng)論