資源描述:
《mfc框架窗口界面設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第6章框架窗口界面設(shè)計6.1框架窗口6.2菜單6.3工具欄6.4狀態(tài)欄6.5交互對象的動態(tài)更新6.6圖標和光標6.1框架窗口6.1.1單文檔和多文檔程序框架窗口文檔應(yīng)用程序的MFC類結(jié)構(gòu)如圖是單文檔應(yīng)用程序Ex_SDI和多文檔應(yīng)用程序Ex_MDI的MFC類結(jié)構(gòu)。CAboutDlg是每一個應(yīng)用程序框架都有的,用來顯示本程序的有關(guān)信息。CEx_SDIApp和CEx_MDIApp是應(yīng)用程序類,是從CWinApp類派生而來,負責應(yīng)用程序創(chuàng)建、運行和終止,每一個應(yīng)用程序都需要這樣的類。CEx_SDIDoc和CEx_MDIDoc是文檔類
2、,它們是從CDocument類派生而來,負責應(yīng)用程序文檔數(shù)據(jù)管理。CEx_SDIView和CEx_MDIView是視圖類,它們既可以從基類CView派生,也可以從CView派生類派生,負責數(shù)據(jù)的顯示、繪制和其他用戶交互。CMainFrame類是用來負責主框架窗口的顯示和管理,包括工具欄和狀態(tài)欄等界面元素的初始化。對于單文檔應(yīng)用程序來說,主框架窗口類是從CFrameWnd派生而來的,而對于多文檔應(yīng)用程序程序,主框架窗口是從CMDIFrameWnd派生的。6.1框架窗口CChildFrame類是從CMDIChildWnd派生而來
3、,專門用來管理多文檔應(yīng)用程序中的文檔窗口。無論是CMDIChildWnd還是CMDIFrameWnd類,它們都是從CFrameWnd派生而來的。對于基于對話框的應(yīng)用程序,一般有CAboutDlg類、應(yīng)用程序類和對話框類。上述MFC類之間的繼承和派生關(guān)系如圖6.2所示。圖6.2MFC類的基本層次結(jié)構(gòu)CCmdTargetCWndCDocumentCFrameWndCObjectCWinTreadCWinAppCViewCDialog及控件CMDIChildWndCMDIFrameWndCMiniFrameWnd6.1框架窗口項目
4、的文件組織項目中源文件都是采用文件夾的方式進行管理的,將項目名作為文件夾名,此文件夾下包含源程序代碼文件、項目文件以及項目工作區(qū)文件等。每一個類的源代碼均保存同名的h和cpp文件。其他一些文件類型的含義:.opt關(guān)于開發(fā)環(huán)境的參數(shù)文件,如工具條位置等信息.aps(AppStudioFile)資源輔助文件,二進制格式.clwClassWizard信息文件.dsp(DeveloperStudioProject)項目文件.plg編譯信息文件.mdp(MicrosoftDevStudioProject)舊版本的項目文件.bsc用于瀏
5、覽項目信息.map執(zhí)行文件的映像信息紀錄文件.pch(Pre-CompiledFile)預(yù)編譯文件,可以加快編譯速度,但是文件非常大.pdb(ProgramDatabase)記錄程序有關(guān)的一些數(shù)據(jù)和調(diào)試信息.ncb無編譯瀏覽文件(nocompilebrowser)還有相應(yīng)的Debug(調(diào)試)、Res(資源)等子文件夾。用應(yīng)用程序向?qū)?chuàng)建項目時,系統(tǒng)自動為項目創(chuàng)建Win32Debug版本的運行程序,并使用相應(yīng)的默認配置。程序編連后,用于該項目的可執(zhí)行文件以及其他調(diào)試的信息文件都安放在Debug文件夾中。程序項目有一個Win32
6、Release版本,與Release的區(qū)別在于:Debug版本的運行程序有相應(yīng)的調(diào)試信息碼,Release版本的運行程序沒有,但Release版本的運行程序經(jīng)過代碼的優(yōu)化,其程序的運行效率被最大提升。選擇“編譯”?“配置”菜單命令,在“配置”對話框?qū)㈨椖吭O(shè)置成Win32Release版本。6.1框架窗口主框架窗口和文檔窗口主框架窗口是直接放置在桌面(DeskTop)上的那個窗口,每個應(yīng)用程序只能有一個主框架窗口。主框架窗口負責管理各個用戶交互對象并根據(jù)用戶操作相應(yīng)地創(chuàng)建或更新文檔窗口及其視圖。文檔窗口對SDI程序來說,和主框
7、架窗口是一致的,主框架窗口就是文檔窗口;對于MDI程序,文檔窗口是主框架窗口的子窗口,如圖。文檔窗口一般都有相應(yīng)的可見邊框,它的客戶區(qū)(除了窗口標題欄、邊框外的區(qū)域)是由相應(yīng)的視圖來構(gòu)成的,因此可以說視圖是文檔窗口內(nèi)的子窗口。文檔窗口時刻跟蹤當前處于活動狀態(tài)的視圖的變化,并將用戶或系統(tǒng)產(chǎn)生的消息傳遞給當前活動視圖。6.1框架窗口6.1.2窗口狀態(tài)的改變MFCAppWizard為每個窗口設(shè)置了相應(yīng)的大小和位置。運行程序時,會自動調(diào)用框架內(nèi)部的WinMain函數(shù),并自動查找該應(yīng)用程序類的全局變量theApp,然后自動調(diào)用用戶應(yīng)用
8、程序類的虛函數(shù)InitInstance,該函數(shù)會進一步調(diào)用相應(yīng)的函數(shù)來完成主窗口的構(gòu)造和顯示工作,代碼:BOOLCEx_SDIApp::InitInstance(){…m_pMainWnd->ShowWindow(SW_SHOW);//顯示窗口m_pMainWnd->UpdateWindo