第2章 對(duì)話框.ppt_第1頁(yè)
第2章 對(duì)話框.ppt_第2頁(yè)
第2章 對(duì)話框.ppt_第3頁(yè)
第2章 對(duì)話框.ppt_第4頁(yè)
第2章 對(duì)話框.ppt_第5頁(yè)
已閱讀5頁(yè),還剩36頁(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)介

1、第2章 對(duì)話框,創(chuàng)建對(duì)話框,設(shè)計(jì)對(duì)話框,使用對(duì)話框,2.1 創(chuàng)建對(duì)話框,2.1.1 創(chuàng)建對(duì)話框應(yīng)用程序 用MFC AppWizard(MFC應(yīng)用程序向?qū)В┛梢苑浅7奖愕貏?chuàng)建一個(gè)基于對(duì)話框的應(yīng)用程序,如下面的過(guò)程: 在“E:Visual C+程序”文件夾中,創(chuàng)建本章應(yīng)用程序工作文件夾“第2章”。 啟動(dòng)Visual C+ 6.0,選擇“文件”“新建”菜單,在彈出的“新建”對(duì)話框的工程標(biāo)簽頁(yè)面中,選擇MFC AppWizard(exe)的項(xiàng)目類型。,2.1.1 創(chuàng)建對(duì)話框應(yīng)用程序,步驟1,單擊“確定”按鈕進(jìn)入下一步,從彈出的“步驟1”對(duì)話框中,選擇“基本對(duì)話框”應(yīng)用程序類型。 步驟2,單擊“下一步”

2、按鈕,出現(xiàn)如圖2.2所示的對(duì)話框,從中可選擇設(shè)置對(duì)話框的風(fēng)格以及ActiveX控件、Windows Sockets網(wǎng)絡(luò)等的支持。,2.1.1 創(chuàng)建對(duì)話框應(yīng)用程序,步驟3,單擊“下一步”按鈕,出現(xiàn)如圖2.3所示的對(duì)話框,從中除了窗口風(fēng)格是MFC標(biāo)準(zhǔn)風(fēng)格外,還可有兩個(gè)方面的選擇:一是在源文件中是否加入注釋用來(lái)引導(dǎo)程序代碼的編寫,另一個(gè)是使用動(dòng)態(tài)鏈接庫(kù)還是靜態(tài)鏈接庫(kù)。,2.1.1 創(chuàng)建對(duì)話框應(yīng)用程序,步驟4,保留默認(rèn)選項(xiàng),單擊 按鈕,出現(xiàn)如圖2.4所示的對(duì)話框,在這里,可以對(duì)MFC AppWizard提供的默認(rèn)類名、基類名、各個(gè)源文件名進(jìn)行修改。,2.1.1 創(chuàng)建對(duì)話框應(yīng)用程序,單擊編譯工具欄中的“

3、運(yùn)行工具” 按鈕或按快捷鍵Ctrl+F5,系統(tǒng)開(kāi)始編譯、連接并運(yùn)行生成的對(duì)話框應(yīng)用程序可執(zhí)行文件Ex_Dlg.exe,運(yùn)行結(jié)果如圖2.5所示。,2.1.2 添加并創(chuàng)建對(duì)話框,1. 創(chuàng)建默認(rèn)的單文檔應(yīng)用程序 啟動(dòng)Visual C+ 6.0,選擇“文件”“新建”菜單,在彈出的“新建”對(duì)話框的工程標(biāo)簽頁(yè)面中,選擇MFC AppWizard(exe)的項(xiàng)目類型。在工程編輯框中輸入單文檔應(yīng)用程序名Ex_SDI。 單擊“確定”按鈕進(jìn)入下一步,從彈出的“步驟1”對(duì)話框中,選擇“單文檔”應(yīng)用程序類型。單擊“完成”按鈕,出現(xiàn)一個(gè)信息對(duì)話框,顯示出用戶在前面幾個(gè)步驟中做出的選擇,單擊“確定”按鈕,系統(tǒng)開(kāi)始創(chuàng)建,并

4、又回到了Visual C+ 6.0的主界面。,2.1.2 添加并創(chuàng)建對(duì)話框,2. 資源和資源標(biāo)識(shí) Visual C+ 6.0將Windows應(yīng)用程序中經(jīng)常用到的菜單、工具欄、對(duì)話框、圖標(biāo)等都視為“資源”,并將其單獨(dú)存放在一個(gè)資源文件中。每個(gè)資源都有相應(yīng)的標(biāo)識(shí)符來(lái)表示區(qū)分,并且可以像變量一樣進(jìn)行賦值。 將項(xiàng)目工作區(qū)切換到“ResourceView”頁(yè)面,展開(kāi)所有節(jié)點(diǎn),如圖2.6所示。,2.1.2 添加并創(chuàng)建對(duì)話框,3. 添加對(duì)話框資源 選擇“插入”“資源”菜單,或按快捷鍵Ctrl+R打開(kāi)“插入資源”對(duì)話框,在對(duì)話框中可以看到資源列表中存在Dialog項(xiàng),若單擊Dialog項(xiàng)左邊的“+”號(hào),將展開(kāi)

5、對(duì)話框資源的不同類型選項(xiàng),如圖2.7所示。,2.1.2 添加并創(chuàng)建對(duì)話框,表2.1列出各種類型的對(duì)話框資源的不同用途。,2.1.2 添加并創(chuàng)建對(duì)話框,對(duì)展開(kāi)的不同類型的對(duì)話框資源不作任何選擇,選中“Dialog”,單擊 按鈕,系統(tǒng)就會(huì)自動(dòng)為當(dāng)前應(yīng)用程序添加了一個(gè)對(duì)話框資源,并出現(xiàn)如圖2.8所示的界面。,2.1.2 添加并創(chuàng)建對(duì)話框,4. 創(chuàng)建對(duì)話框類 在對(duì)話框資源模板的空白區(qū)域(沒(méi)有其他元素或控件)內(nèi)雙擊鼠標(biāo)左鍵,將彈出如圖2.9所示的對(duì)話框。,2.1.2 添加并創(chuàng)建對(duì)話框,單擊OK按鈕,出現(xiàn)如圖2.10所示的“New Class”(新類)對(duì)話框。,2.2 設(shè)計(jì)對(duì)話框,2.2.1 設(shè)置對(duì)話框?qū)?/p>

6、性 在對(duì)話框模板的空白處右擊鼠標(biāo),從彈出的快捷菜單中選擇“屬性”菜單項(xiàng),出現(xiàn)如圖2.11所示的對(duì)話框?qū)傩源翱凇?2.2.1 設(shè)置對(duì)話框?qū)傩?對(duì)話框具有這幾類屬性:常規(guī)(General)、樣式(Styles)、更多樣式(More Styles)擴(kuò)展樣式(Extended Styles)、更多擴(kuò)展More Extended Styles(更多擴(kuò)展樣式)等部分,這里僅介紹最常用的常規(guī)(General)屬性,如表2.2所示。,2.2.2 添加和布局控件,1. 控件的添加 利用“控件”工具欄中的各個(gè)按鈕可以順利完成控件的添加。圖2.12說(shuō)明了各個(gè)按鈕所對(duì)應(yīng)的控件類型。,2.2.2 添加和布局控件,2.

7、控件的選取 控件的刪除、復(fù)制和布局操作一般都要先選取控件,若選取單個(gè)控件,則可以下列方法: 用鼠標(biāo)直接選取。 用助記符來(lái)選取。 用Tab鍵選取。 對(duì)于多個(gè)控件的選取,可采用下列方法: 先在對(duì)話框內(nèi)按住鼠標(biāo)左鍵不放,拖出一個(gè)大的虛框,然后釋放鼠標(biāo),則被該虛框所包圍的控件都將被選取。 先按住Shift鍵不放,然后用鼠標(biāo)選取控件,直到所需要的多個(gè)控件選取之后再釋放Shift鍵。若在選取時(shí),對(duì)已選取的控件再選取一下,則取消該控件選取。,2.2.2 添加和布局控件,3. 控件的刪除、復(fù)制和布局 當(dāng)單個(gè)控件或多個(gè)控件被選取后,按方向鍵或用鼠標(biāo)拖動(dòng)控件的選擇框可移動(dòng)控件。若在鼠標(biāo)拖動(dòng)過(guò)程中還按住Ctrl鍵則

8、復(fù)制控件。 對(duì)于控件的布局,對(duì)話框編輯器中提供了控件布局工具欄,如圖2.14所示,它可以自動(dòng)地排列對(duì)話框內(nèi)的控件,并能改變控件的大小。,2.2.2 添加和布局控件,4. 測(cè)試對(duì)話框 “布局”菜單下的“測(cè)試”命令或布局工具欄上的測(cè)試按鈕 是用來(lái)模擬所編輯的對(duì)話框的運(yùn)行情況,幫助用戶檢驗(yàn)對(duì)話框是否符合用戶的設(shè)計(jì)要求以及控件功能是否有效等。 5. 操作示例 下面來(lái)向?qū)υ捒蛱砑尤齻€(gè)靜態(tài)文本控件(一個(gè)靜態(tài)文本控件就是一個(gè)文本標(biāo)簽): 在控件工具欄上,單擊 按鈕,然后在對(duì)話框模板左上角單擊鼠標(biāo)左鍵不放,拖動(dòng)鼠標(biāo)至滿意位置,釋放鼠標(biāo)鍵。這樣,第一個(gè)靜態(tài)文本控件添加到對(duì)話框中了。 單擊布局工具欄上的 按鈕,打

9、開(kāi)對(duì)話框模板的網(wǎng)格。 在控件工具欄上,將 按鈕拖放到對(duì)話框模板中的左中部。這樣,第二個(gè)靜態(tài)文本控件添加到對(duì)話框中了。同樣的操作,將第三個(gè)靜態(tài)文本控件拖放到對(duì)話框模板中的左下部。,2.2.2 添加和布局控件,按住Shift鍵不放,依次單擊剛才添加的三個(gè)靜態(tài)文本控件,結(jié)果如圖2.15所示。 在布局工具欄上,依次單擊“大小相同”按鈕 、“靠左對(duì)齊”按鈕 、“上下間隔相等”按鈕 ,結(jié)果如圖2.16所示。,2.2.3 分組和刻蝕線,1. 組框 “組框”(Group Box)是一種靜態(tài)控件,它使用具有刻蝕效果的矩形框線來(lái)細(xì)分對(duì)話框界面,其常規(guī)(General)屬性如圖2.17所示。,2.2.3 分組和刻蝕

10、線,在對(duì)話框模板的“網(wǎng)格”方式下,多個(gè)組框重疊后可構(gòu)成形式多樣的單元格,如圖2.18所示。,2.2.3 分組和刻蝕線,2. 刻蝕線 當(dāng)對(duì)話框界面無(wú)需太多的細(xì)分時(shí),常使用一條水平和豎直的刻蝕線來(lái)分隔。此時(shí),就需要使用“圖片”(Picture)控件來(lái)構(gòu)成。與“組框”控件相似,“圖片”(Picture)控件也屬于靜態(tài)控件,其常規(guī)(General)屬性如圖2.19所示。,2.2.4 WM_INITDIALOG消息,在前面創(chuàng)建的Ex_Dlg應(yīng)用程序項(xiàng)目中,Visual C+自動(dòng)為其添加了WM_INITDIALOG消息的映射函數(shù)OnInitDialog,并添加了一系列的初始化代碼: BOOL CEx_Dl

11、gDlg:OnInitDialog() CDialog:OnInitDialog(); return TRUE; / return TRUE unless you set the focus to a control ,2.2.4 WM_INITDIALOG消息,下面以單文檔應(yīng)用程序Ex_SDI添加的COneDlg對(duì)話框?yàn)槔f(shuō)明該的映射過(guò)程: 按【Ctrl+W】快捷鍵,彈出MFC ClassWizard對(duì)話框,將其切換到“Message Maps”標(biāo)簽頁(yè)面。 在Class name組合框中,將類名選定為COneDlg(圖2.20中的標(biāo)記1);在Object IDs列表框中選定COneDlg(圖

12、2.20中的標(biāo)記2),然后拖動(dòng)Messages列表框右側(cè)的滾動(dòng)塊,直到出現(xiàn)要映射的WM_INITDIALOG消息為止(圖2.20中的標(biāo)記3),結(jié)果如圖2.20所示。,2.2.4 WM_INITDIALOG消息,雙擊Messages列表中的WM_INITDIALOG消息或單擊Add Function按鈕,都會(huì)在CEx_SDIView類中添加該消息的映射函數(shù)OnLButtonDown,同時(shí)在Member funcions列表中顯示這一消息映射函數(shù)和被映射的消息。 雙擊消息函數(shù),即圖2.21中的標(biāo)記1或單擊Edit Code按鈕,MFC ClassWizard對(duì)話框退出,并轉(zhuǎn)向文檔窗口,定位到COn

13、eDlg:OnInitDialog函數(shù)實(shí)現(xiàn)的源代碼處,從中可添加一些初始化代碼。,2.3 使用對(duì)話框,2.3.1 在程序中使用 將項(xiàng)目工作區(qū)窗口切換到“ResourceView”頁(yè)面,展開(kāi)所有節(jié)點(diǎn),雙擊資源“Menu”項(xiàng)中的IDR_MAINFRAME,將打開(kāi)菜單編輯器,相應(yīng)的Ex_SDI項(xiàng)目的菜單資源被顯示出來(lái),在菜單的最后一項(xiàng),留出了一個(gè)菜單項(xiàng)的空位置,用來(lái)輸入新的菜單項(xiàng),如圖2.22所示。,菜單的空位置,2.3.1 在程序中使用,在菜單的空位置上雙擊鼠標(biāo)左鍵,則出現(xiàn)它的屬性對(duì)話框,在標(biāo)題框中輸入“對(duì)話框( dlg.DoModal(); ,2.3.1 在程序中使用,在CEx_SDIView類

14、的實(shí)現(xiàn)文件Ex_SDIView.cpp的前面,即將剛才添加代碼的文檔窗口滾動(dòng)到最前面,添加COneDlg類的頭文件包含,即: #include stdafx.h / #include Ex_SDIView.h #include OneDlg.h 編譯并運(yùn)行。在應(yīng)用程序菜單上,選擇“對(duì)話框”“第一個(gè)對(duì)話框”菜單項(xiàng),將出現(xiàn)如圖2.28的對(duì)話框。,2.3.2 DoModal和模式對(duì)話框,要求獲取對(duì)話框中用戶操作的內(nèi)容,則還應(yīng)判斷DoModal的返回值,即如下面的代碼: int nRet = dlg.DoModal(); / Handle the return value from DoModal s

15、witch ( nRet ) case -1: AfxMessageBox(Dialog box could not be created!); break; case IDOK: / Do something break; case IDCANCEL: / Do something break; default: / Do something break; ;,2.3.2 DoModal和模式對(duì)話框,或簡(jiǎn)單的使用下列代碼框架: if (IDOK = dlg.DoModal() ) / Do something ,2.3.3 通用對(duì)話框,MFC對(duì)這些通用對(duì)話框所構(gòu)造的類都是從一個(gè)公共的基類CC

16、ommonDialog派生而來(lái)。表2.4列出了這些通用對(duì)話框類。,2.3.3 通用對(duì)話框,用戶可以在程序中直接使用這些通用對(duì)話框,例如下面的代碼是測(cè)試在上述示例中的OnDlgFirst中,運(yùn)行后在應(yīng)用程序的菜單上,選擇“對(duì)話框”“第一個(gè)對(duì)話框”菜單項(xiàng),將彈出如圖2.29所示的對(duì)話框。,2.3.3 通用對(duì)話框,選定一個(gè)文件后,單擊 “打開(kāi)”按鈕,就會(huì)彈出一個(gè)消息對(duì)話框,顯示該文件的全路徑名稱。 void CMainFrame:OnTestDlg() CString filter; filter = 文本文件(*.txt)|*.txt|C+文件(*.h,*.cpp)|*.h;*.cpp|; CFi

17、leDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY, filter); if (dlg.DoModal () = IDOK) CString str; str = dlg.GetPathName(); AfxMessageBox(str); ,2.3.4 消息對(duì)話框,在Visual C+ 6.0的MFC類庫(kù)中就提供相應(yīng)的函數(shù)實(shí)現(xiàn)這樣的功能,使用時(shí),直接在程序中調(diào)用它們即可。它們的函數(shù)原型如下: int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = M

溫馨提示

  • 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)論