《3_第三章 MFC應(yīng)用程序框架》由會(huì)員分享,可在線閱讀,更多相關(guān)《3_第三章 MFC應(yīng)用程序框架(13頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,3.1,基于,MFC,的窗口程序,3.2 MFC,應(yīng)用程序框架與,Win32,程序,3.3 MFC,應(yīng)用程序框架的基本類,3.4,基本類對象之間的相互訪問,第三章,MFC,應(yīng)用程序框架,3.1,基于,MFC,的窗口程序,(1),OLE:,Object Linking and Embedding,WOSA:,Windows Open System Architecture,AppWizard,文件:,工作區(qū)文件,:*,.,dsw,項(xiàng)目文件:,*,.,dsp,類信息文件:,*,.,clw,應(yīng)用程序源文件:,*,
2、.,cpp,應(yīng)用程序頭文件:,*,.h,資源文件:,*,.,rc,resource.h,*.rc2,預(yù)編譯頭文件:,stdAfx.cpp,stdAfx.h,3.1,基于,MFC,的窗口程序,(2),AppWizard,生成的基本類:,類名稱,基類,頭文件,源文件,C,*App,CWinApp,*.h,*,.,cpp,CMainFrame,CFrameWnd,Mainfrm.h,Mainfrm.cpp,C,*Doc,CDocument,*,Doc.h,*,Doc.h.cpp,C,*View,CView,*,View.h,*,View.cpp,C*App,:應(yīng)用程序類,負(fù)責(zé)程序的初始化和結(jié)束處理。
3、,CMainFrame,:,主窗口類,負(fù)責(zé)主窗口的創(chuàng)建、顯示和消息派發(fā)。,C*Doc,:文檔類,負(fù)責(zé)應(yīng)用程序的數(shù)據(jù)存儲(chǔ)、修改和管理。,C*View,:視圖類,負(fù)責(zé)為數(shù)據(jù)的顯示和修改提供人機(jī)界面。,3.1,基于,MFC,的窗口程序,(3),設(shè)置應(yīng)用程序環(huán)境參數(shù),鏈接庫文件(靜態(tài)鏈接庫和動(dòng)態(tài)鏈接庫)方法:,在文件中包含庫函數(shù)聲明。,把對應(yīng)的庫文件(*,.lib,)加入項(xiàng)目。,對動(dòng)態(tài)鏈接庫,將對應(yīng)的,DLL,文件(*,.,dll,)放在系統(tǒng)目錄或當(dāng)前目錄下。,設(shè)置庫文件(,MFC,庫和,SDK,庫)生成,MAKE,文件,Windows C,Rumtime,函數(shù)庫,DLL Import,函數(shù)庫,MFC
4、 Import,函數(shù)庫,3.1,基于,MFC,的窗口程序,(4),設(shè)置應(yīng)用程序環(huán)境參數(shù),引用正確的頭文件:,Stdafx.h,:,預(yù)編譯頭文件,Afxwin.h,:,聲明所有,MFC,類,Afxext.h,:,聲明工具欄和狀態(tài)欄等窗口特征,Afxdlgs.h,:,聲明通用型對話框的,MFC,類,Afxcmn.h,:,聲明,Windows 9X,新增的通用控件類,Afxcoll.h,:,聲明集合類,Afxtempl.h,:,聲明模板集合類,Afxdllx.h,:,聲明可制作,MFC,的擴(kuò)展,DLL,Afxres.h,:,聲明,MFC,的標(biāo)準(zhǔn)資源,3.1,基于,MFC,的窗口程序,(5),VC,集
5、成開發(fā)工具與應(yīng)用程序生成步驟:,利用,VC,的,AppWizard,生成新項(xiàng)目。,VC,集成編輯器可以編輯源文件,用,ClassWizard,編輯,C+,類,在資源編輯器修改資源文件。,源文件經(jīng)過編譯生成*,.OBJ,文件,資源文件經(jīng)過編譯生成*,.RES,文件。鏈接器將各個(gè)*,.OBJ,、*,RES,和庫文件結(jié)合起來,生成可執(zhí)行文件。,MFC,應(yīng)用程序生成過程,VC IDE(,集成編輯器,),App Wizard,源文件,.DEF,.CPP,.H,.DSP,.DSW,資源文件,.ICO,.DLG,.BMP,ClassWizard,C/C+,編譯器,資源編輯器,資源編譯器,.LIB,(C,Ru
6、mtime,DLL Import),.OBJ,.RES,鏈接器(,Linker,),.EXE,3.2 MFC,應(yīng)用程序與,Win32,程序(,1,),Windows,程序的基本結(jié)構(gòu)(回憶第二章內(nèi)容)。,MFC,類對,WinMain,和,WndProc,的封裝。,(,P81,圖,3.14,和,P86,圖,3.15,),CWinApp,:,封裝了,WinMain,函數(shù)的功能,應(yīng)用程序啟動(dòng),消息循環(huán)啟動(dòng),程序結(jié)束,CFrameWnd,:,封裝了,WndProc,函數(shù)的功能,窗口創(chuàng)建,消息處理,窗口銷毀,3.2 MFC,應(yīng)用程序與,Win32,程序(,2,),MFC,應(yīng)用程序的啟動(dòng)流程,(,P88,圖
7、,3.16,),全局主函數(shù),AfxWinMain,(),:啟動(dòng)應(yīng)用程序,C*,App:InitInstance,(),:創(chuàng)建窗口對象和主窗口,視圖對象和視圖窗口,以及文檔對象。,動(dòng)態(tài)創(chuàng)建對象(見第八章)。,文檔模板類管理動(dòng)態(tài)創(chuàng)建信息。,CCommandLineInfo,類對象保存程序啟動(dòng)時(shí)的命令行信息。,ParseCommandLine,(),分解命令行信息,填寫程序啟動(dòng)標(biāo)志。,ProcessShellCommand,(),根據(jù)命令行信息,啟動(dòng)不同的任務(wù)。,創(chuàng)建“三個(gè)對象,兩個(gè)窗口”的流程,(,P92,圖,3.17,和,P93,圖,3.18,),窗口的顯示和更新,C*,App:Run,(),:
8、調(diào)用間接基類,CWinThread:Run,(),讀取消息隊(duì)列,并啟動(dòng)消息循環(huán)。,3.3 MFC,應(yīng)用程序框架的基本類(,1,),1.MFC,類體系的三大基類:,根類,CObject,具有動(dòng)態(tài)性、診斷性和持續(xù)性三大特性。從,CObject,派生的類,具有在程序運(yùn)行時(shí),獲得對象大小和類名的能力。,(詳見第八章),從,CCmdTarget,派生的類,具有在程序運(yùn)行時(shí),動(dòng)態(tài)創(chuàng)建對象和處理命令消息的能力。,從,CWnd,派生的類可以擁有自己的窗口,并能對它進(jìn)行控制的能力。,3.3 MFC,應(yīng)用程序框架的基本類(,2,),2.,基本類及其作用,CWinApp,:負(fù)責(zé)初始化和運(yùn)行應(yīng)用程序,CFrameWn
9、d,:負(fù)責(zé)顯示和搜尋用戶命令,CDocument,:負(fù)責(zé)裝載和維護(hù)文檔,其中包括應(yīng)用程序的工作成果和環(huán)境設(shè)置數(shù)據(jù),或其它任何內(nèi)容。,CView,:負(fù)責(zé)為文檔提供一個(gè)或幾個(gè)視圖,提供修改、查詢文檔的人機(jī)交互的界面。,3.,基本類與,SDI,、,MDI,關(guān)系,(,P100,圖,3.19,和,P101,圖,3.20,),3.4,基本類對象之間的相互訪問,1.SDI,應(yīng)用程序基本類對象之間的相互訪問,(,P102,圖,3.21,),2.MDI,應(yīng)用程序基本類對象之間的相互訪問,(,P103,圖,3.22,),3.,注意事項(xiàng),:,以上相互訪問僅限于同一應(yīng)用程序?qū)嵗蛲贿M(jìn)程中。,注意相互訪問的函數(shù)有全局函數(shù)和類的成員函數(shù)。,成員函數(shù)實(shí)際上是定義在,MFC,基類中。,在應(yīng)用程序中任何一個(gè)類對象,要訪問應(yīng)用程序類對象,只需調(diào)用全局函數(shù),AfxGetApp,(),。,在應(yīng)用程序中任何一個(gè)類對象,要訪問框架窗口類對象,只需調(diào)用全局函數(shù),AfxGetMainWnd,(),。,由于一個(gè)文檔有多個(gè)視圖窗口對應(yīng),因此從文檔類訪問視圖類成員時(shí),需要遍歷與文檔對象關(guān)聯(lián)的視圖鏈表。,The End,