第2章 對話框.ppt_第1頁
第2章 對話框.ppt_第2頁
第2章 對話框.ppt_第3頁
第2章 對話框.ppt_第4頁
第2章 對話框.ppt_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

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

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

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

4、又回到了Visual C+ 6.0的主界面。,2.1.2 添加并創(chuàng)建對話框,2. 資源和資源標識 Visual C+ 6.0將Windows應用程序中經(jīng)常用到的菜單、工具欄、對話框、圖標等都視為“資源”,并將其單獨存放在一個資源文件中。每個資源都有相應的標識符來表示區(qū)分,并且可以像變量一樣進行賦值。 將項目工作區(qū)切換到“ResourceView”頁面,展開所有節(jié)點,如圖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)就會自動為當前應用程序添加了一個對話框資源,并出現(xiàn)如圖2.8所示的界面。,2.1.2 添加并創(chuàng)建對話框,4. 創(chuàng)建對話框類 在對話框資源模板的空白區(qū)域(沒有其他元素或控件)內(nèi)雙擊鼠標左鍵,將彈出如圖2.9所示的對話框。,2.1.2 添加并創(chuàng)建對話框,單擊OK按鈕,出現(xiàn)如圖2.10所示的“New Class”(新類)對話框。,2.2 設計對話框,2.2.1 設置對話框?qū)?/p>

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

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

8、復制控件。 對于控件的布局,對話框編輯器中提供了控件布局工具欄,如圖2.14所示,它可以自動地排列對話框內(nèi)的控件,并能改變控件的大小。,2.2.2 添加和布局控件,4. 測試對話框 “布局”菜單下的“測試”命令或布局工具欄上的測試按鈕 是用來模擬所編輯的對話框的運行情況,幫助用戶檢驗對話框是否符合用戶的設計要求以及控件功能是否有效等。 5. 操作示例 下面來向?qū)υ捒蛱砑尤齻€靜態(tài)文本控件(一個靜態(tài)文本控件就是一個文本標簽): 在控件工具欄上,單擊 按鈕,然后在對話框模板左上角單擊鼠標左鍵不放,拖動鼠標至滿意位置,釋放鼠標鍵。這樣,第一個靜態(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)控件,它使用具有刻蝕效果的矩形框線來細分對話框界面,其常規(guī)(General)屬性如圖2.17所示。,2.2.3 分組和刻蝕

10、線,在對話框模板的“網(wǎng)格”方式下,多個組框重疊后可構(gòu)成形式多樣的單元格,如圖2.18所示。,2.2.3 分組和刻蝕線,2. 刻蝕線 當對話框界面無需太多的細分時,常使用一條水平和豎直的刻蝕線來分隔。此時,就需要使用“圖片”(Picture)控件來構(gòu)成。與“組框”控件相似,“圖片”(Picture)控件也屬于靜態(tài)控件,其常規(guī)(General)屬性如圖2.19所示。,2.2.4 WM_INITDIALOG消息,在前面創(chuàng)建的Ex_Dlg應用程序項目中,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消息,下面以單文檔應用程序Ex_SDI添加的COneDlg對話框為例說明該的映射過程: 按【Ctrl+W】快捷鍵,彈出MFC ClassWizard對話框,將其切換到“Message Maps”標簽頁面。 在Class name組合框中,將類名選定為COneDlg(圖2.20中的標記1);在Object IDs列表框中選定COneDlg(圖

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

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

14、的實現(xiàn)文件Ex_SDIView.cpp的前面,即將剛才添加代碼的文檔窗口滾動到最前面,添加COneDlg類的頭文件包含,即: #include stdafx.h / #include Ex_SDIView.h #include OneDlg.h 編譯并運行。在應用程序菜單上,選擇“對話框”“第一個對話框”菜單項,將出現(xiàn)如圖2.28的對話框。,2.3.2 DoModal和模式對話框,要求獲取對話框中用戶操作的內(nèi)容,則還應判斷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中,運行后在應用程序的菜單上,選擇“對話框”“第一個對話框”菜單項,將彈出如圖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類庫中就提供相應的函數(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論