版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第2章 對話框,創(chuàng)建對話框,設(shè)計對話框,使用對話框,2.1 創(chuàng)建對話框,2.1.1 創(chuàng)建對話框應(yīng)用程序 用MFC AppWizard(MFC應(yīng)用程序向?qū)В┛梢苑浅7奖愕貏?chuàng)建一個基于對話框的應(yīng)用程序,如下面的過程: 在“E:Visual C+程序”文件夾中,創(chuàng)建本章應(yīng)用程序工作文件夾“第2章”。 啟動Visual C+ 6.0,選擇“文件”“新建”菜單,在彈出的“新建”對話框的工程標(biāo)簽頁面中,選擇MFC AppWizard(exe)的項目類型。,2.1.1 創(chuàng)建對話框應(yīng)用程序,步驟1,單擊“確定”按鈕進(jìn)入下一步,從彈出的“步驟1”對話框中,選擇“基本對話框”應(yīng)用程序類型。 步驟2,單擊“下一步”
2、按鈕,出現(xiàn)如圖2.2所示的對話框,從中可選擇設(shè)置對話框的風(fēng)格以及ActiveX控件、Windows Sockets網(wǎng)絡(luò)等的支持。,2.1.1 創(chuàng)建對話框應(yīng)用程序,步驟3,單擊“下一步”按鈕,出現(xiàn)如圖2.3所示的對話框,從中除了窗口風(fēng)格是MFC標(biāo)準(zhǔn)風(fēng)格外,還可有兩個方面的選擇:一是在源文件中是否加入注釋用來引導(dǎo)程序代碼的編寫,另一個是使用動態(tài)鏈接庫還是靜態(tài)鏈接庫。,2.1.1 創(chuàng)建對話框應(yīng)用程序,步驟4,保留默認(rèn)選項,單擊 按鈕,出現(xiàn)如圖2.4所示的對話框,在這里,可以對MFC AppWizard提供的默認(rèn)類名、基類名、各個源文件名進(jìn)行修改。,2.1.1 創(chuàng)建對話框應(yīng)用程序,單擊編譯工具欄中的“
3、運(yùn)行工具” 按鈕或按快捷鍵Ctrl+F5,系統(tǒng)開始編譯、連接并運(yùn)行生成的對話框應(yīng)用程序可執(zhí)行文件Ex_Dlg.exe,運(yùn)行結(jié)果如圖2.5所示。,2.1.2 添加并創(chuàng)建對話框,1. 創(chuàng)建默認(rèn)的單文檔應(yīng)用程序 啟動Visual C+ 6.0,選擇“文件”“新建”菜單,在彈出的“新建”對話框的工程標(biāo)簽頁面中,選擇MFC AppWizard(exe)的項目類型。在工程編輯框中輸入單文檔應(yīng)用程序名Ex_SDI。 單擊“確定”按鈕進(jìn)入下一步,從彈出的“步驟1”對話框中,選擇“單文檔”應(yīng)用程序類型。單擊“完成”按鈕,出現(xiàn)一個信息對話框,顯示出用戶在前面幾個步驟中做出的選擇,單擊“確定”按鈕,系統(tǒng)開始創(chuàng)建,并
4、又回到了Visual C+ 6.0的主界面。,2.1.2 添加并創(chuàng)建對話框,2. 資源和資源標(biāo)識 Visual C+ 6.0將Windows應(yīng)用程序中經(jīng)常用到的菜單、工具欄、對話框、圖標(biāo)等都視為“資源”,并將其單獨(dú)存放在一個資源文件中。每個資源都有相應(yīng)的標(biāo)識符來表示區(qū)分,并且可以像變量一樣進(jìn)行賦值。 將項目工作區(qū)切換到“ResourceView”頁面,展開所有節(jié)點(diǎn),如圖2.6所示。,2.1.2 添加并創(chuàng)建對話框,3. 添加對話框資源 選擇“插入”“資源”菜單,或按快捷鍵Ctrl+R打開“插入資源”對話框,在對話框中可以看到資源列表中存在Dialog項,若單擊Dialog項左邊的“+”號,將展開
5、對話框資源的不同類型選項,如圖2.7所示。,2.1.2 添加并創(chuàng)建對話框,表2.1列出各種類型的對話框資源的不同用途。,2.1.2 添加并創(chuàng)建對話框,對展開的不同類型的對話框資源不作任何選擇,選中“Dialog”,單擊 按鈕,系統(tǒng)就會自動為當(dāng)前應(yīng)用程序添加了一個對話框資源,并出現(xiàn)如圖2.8所示的界面。,2.1.2 添加并創(chuàng)建對話框,4. 創(chuàng)建對話框類 在對話框資源模板的空白區(qū)域(沒有其他元素或控件)內(nèi)雙擊鼠標(biāo)左鍵,將彈出如圖2.9所示的對話框。,2.1.2 添加并創(chuàng)建對話框,單擊OK按鈕,出現(xiàn)如圖2.10所示的“New Class”(新類)對話框。,2.2 設(shè)計對話框,2.2.1 設(shè)置對話框?qū)?/p>
6、性 在對話框模板的空白處右擊鼠標(biāo),從彈出的快捷菜單中選擇“屬性”菜單項,出現(xiàn)如圖2.11所示的對話框?qū)傩源翱凇?2.2.1 設(shè)置對話框?qū)傩?對話框具有這幾類屬性:常規(guī)(General)、樣式(Styles)、更多樣式(More Styles)擴(kuò)展樣式(Extended Styles)、更多擴(kuò)展More Extended Styles(更多擴(kuò)展樣式)等部分,這里僅介紹最常用的常規(guī)(General)屬性,如表2.2所示。,2.2.2 添加和布局控件,1. 控件的添加 利用“控件”工具欄中的各個按鈕可以順利完成控件的添加。圖2.12說明了各個按鈕所對應(yīng)的控件類型。,2.2.2 添加和布局控件,2.
7、控件的選取 控件的刪除、復(fù)制和布局操作一般都要先選取控件,若選取單個控件,則可以下列方法: 用鼠標(biāo)直接選取。 用助記符來選取。 用Tab鍵選取。 對于多個控件的選取,可采用下列方法: 先在對話框內(nèi)按住鼠標(biāo)左鍵不放,拖出一個大的虛框,然后釋放鼠標(biāo),則被該虛框所包圍的控件都將被選取。 先按住Shift鍵不放,然后用鼠標(biāo)選取控件,直到所需要的多個控件選取之后再釋放Shift鍵。若在選取時,對已選取的控件再選取一下,則取消該控件選取。,2.2.2 添加和布局控件,3. 控件的刪除、復(fù)制和布局 當(dāng)單個控件或多個控件被選取后,按方向鍵或用鼠標(biāo)拖動控件的選擇框可移動控件。若在鼠標(biāo)拖動過程中還按住Ctrl鍵則
8、復(fù)制控件。 對于控件的布局,對話框編輯器中提供了控件布局工具欄,如圖2.14所示,它可以自動地排列對話框內(nèi)的控件,并能改變控件的大小。,2.2.2 添加和布局控件,4. 測試對話框 “布局”菜單下的“測試”命令或布局工具欄上的測試按鈕 是用來模擬所編輯的對話框的運(yùn)行情況,幫助用戶檢驗(yàn)對話框是否符合用戶的設(shè)計要求以及控件功能是否有效等。 5. 操作示例 下面來向?qū)υ捒蛱砑尤齻€靜態(tài)文本控件(一個靜態(tài)文本控件就是一個文本標(biāo)簽): 在控件工具欄上,單擊 按鈕,然后在對話框模板左上角單擊鼠標(biāo)左鍵不放,拖動鼠標(biāo)至滿意位置,釋放鼠標(biāo)鍵。這樣,第一個靜態(tài)文本控件添加到對話框中了。 單擊布局工具欄上的 按鈕,打
9、開對話框模板的網(wǎng)格。 在控件工具欄上,將 按鈕拖放到對話框模板中的左中部。這樣,第二個靜態(tài)文本控件添加到對話框中了。同樣的操作,將第三個靜態(tài)文本控件拖放到對話框模板中的左下部。,2.2.2 添加和布局控件,按住Shift鍵不放,依次單擊剛才添加的三個靜態(tài)文本控件,結(jié)果如圖2.15所示。 在布局工具欄上,依次單擊“大小相同”按鈕 、“靠左對齊”按鈕 、“上下間隔相等”按鈕 ,結(jié)果如圖2.16所示。,2.2.3 分組和刻蝕線,1. 組框 “組框”(Group Box)是一種靜態(tài)控件,它使用具有刻蝕效果的矩形框線來細(xì)分對話框界面,其常規(guī)(General)屬性如圖2.17所示。,2.2.3 分組和刻蝕
10、線,在對話框模板的“網(wǎng)格”方式下,多個組框重疊后可構(gòu)成形式多樣的單元格,如圖2.18所示。,2.2.3 分組和刻蝕線,2. 刻蝕線 當(dāng)對話框界面無需太多的細(xì)分時,常使用一條水平和豎直的刻蝕線來分隔。此時,就需要使用“圖片”(Picture)控件來構(gòu)成。與“組框”控件相似,“圖片”(Picture)控件也屬于靜態(tài)控件,其常規(guī)(General)屬性如圖2.19所示。,2.2.4 WM_INITDIALOG消息,在前面創(chuàng)建的Ex_Dlg應(yīng)用程序項目中,Visual C+自動為其添加了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對話框?yàn)槔f明該的映射過程: 按【Ctrl+W】快捷鍵,彈出MFC ClassWizard對話框,將其切換到“Message Maps”標(biāo)簽頁面。 在Class name組合框中,將類名選定為COneDlg(圖2.20中的標(biāo)記1);在Object IDs列表框中選定COneDlg(圖
12、2.20中的標(biāo)記2),然后拖動Messages列表框右側(cè)的滾動塊,直到出現(xiàn)要映射的WM_INITDIALOG消息為止(圖2.20中的標(biāo)記3),結(jié)果如圖2.20所示。,2.2.4 WM_INITDIALOG消息,雙擊Messages列表中的WM_INITDIALOG消息或單擊Add Function按鈕,都會在CEx_SDIView類中添加該消息的映射函數(shù)OnLButtonDown,同時在Member funcions列表中顯示這一消息映射函數(shù)和被映射的消息。 雙擊消息函數(shù),即圖2.21中的標(biāo)記1或單擊Edit Code按鈕,MFC ClassWizard對話框退出,并轉(zhuǎn)向文檔窗口,定位到COn
13、eDlg:OnInitDialog函數(shù)實(shí)現(xiàn)的源代碼處,從中可添加一些初始化代碼。,2.3 使用對話框,2.3.1 在程序中使用 將項目工作區(qū)窗口切換到“ResourceView”頁面,展開所有節(jié)點(diǎn),雙擊資源“Menu”項中的IDR_MAINFRAME,將打開菜單編輯器,相應(yīng)的Ex_SDI項目的菜單資源被顯示出來,在菜單的最后一項,留出了一個菜單項的空位置,用來輸入新的菜單項,如圖2.22所示。,菜單的空位置,2.3.1 在程序中使用,在菜單的空位置上雙擊鼠標(biāo)左鍵,則出現(xiàn)它的屬性對話框,在標(biāo)題框中輸入“對話框( dlg.DoModal(); ,2.3.1 在程序中使用,在CEx_SDIView類
14、的實(shí)現(xiàn)文件Ex_SDIView.cpp的前面,即將剛才添加代碼的文檔窗口滾動到最前面,添加COneDlg類的頭文件包含,即: #include stdafx.h / #include Ex_SDIView.h #include OneDlg.h 編譯并運(yùn)行。在應(yīng)用程序菜單上,選擇“對話框”“第一個對話框”菜單項,將出現(xiàn)如圖2.28的對話框。,2.3.2 DoModal和模式對話框,要求獲取對話框中用戶操作的內(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和模式對話框,或簡單的使用下列代碼框架: if (IDOK = dlg.DoModal() ) / Do something ,2.3.3 通用對話框,MFC對這些通用對話框所構(gòu)造的類都是從一個公共的基類CC
16、ommonDialog派生而來。表2.4列出了這些通用對話框類。,2.3.3 通用對話框,用戶可以在程序中直接使用這些通用對話框,例如下面的代碼是測試在上述示例中的OnDlgFirst中,運(yùn)行后在應(yīng)用程序的菜單上,選擇“對話框”“第一個對話框”菜單項,將彈出如圖2.29所示的對話框。,2.3.3 通用對話框,選定一個文件后,單擊 “打開”按鈕,就會彈出一個消息對話框,顯示該文件的全路徑名稱。 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 消息對話框,在Visual C+ 6.0的MFC類庫中就提供相應(yīng)的函數(shù)實(shí)現(xiàn)這樣的功能,使用時,直接在程序中調(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中煤江南建設(shè)發(fā)展集團(tuán)有限公司特種工程分公司招聘備考題庫及完整答案詳解一套
- 2026年麗水寶順行招聘5人備考題庫及完整答案詳解1套
- 2026年定邊縣公開招聘展館講解員備考題庫及完整答案詳解一套
- 2025年廈大附屬翔安實(shí)驗(yàn)學(xué)校公開招聘頂崗教師備考題庫及1套參考答案詳解
- 2026年考點(diǎn)主考職責(zé)保密員職責(zé)及答案參考
- 2026年電工競賽實(shí)操試題及答案(名校卷)
- 2026年巴州新華書店有限責(zé)任公司若羌縣分公司招聘備考題庫有答案詳解
- 2026年中南大學(xué)機(jī)電工程學(xué)院非事業(yè)編制工作人員招聘備考題庫完整答案詳解
- 2026年關(guān)于中共勐海縣委社會工作部編外人員的招聘備考題庫及答案詳解1套
- 2026年外派至中鐵建昆侖高速公路運(yùn)營管理有限公司綿蒼高速運(yùn)營人員招聘備考題庫及一套答案詳解
- 高層建筑腳手架安全使用規(guī)范對比
- 北師大版(2025)初中物理九年級全一冊(北京課改)期末測試卷
- 超星爾雅學(xué)習(xí)通《形勢與政策》2025秋章節(jié)測試含答案
- 急性腸系膜淋巴結(jié)炎診療指南(2025年版)
- 體育產(chǎn)業(yè)知識培訓(xùn)課件
- 2025年高考地理山東卷試卷評析及備考策略(課件)
- (完整版)設(shè)備安裝工程施工方案
- 2025年電商平臺運(yùn)營總監(jiān)資格認(rèn)證考試試題及答案
- 門窗質(zhì)量保證措施
- 浙江省2025年初中學(xué)業(yè)水平考試浙真組合·錢塘甬真卷(含答案)
- 鉆井工程施工進(jìn)度計劃安排及其保證措施
評論
0/150
提交評論