1、MFC編程.ppt_第1頁
1、MFC編程.ppt_第2頁
1、MFC編程.ppt_第3頁
1、MFC編程.ppt_第4頁
1、MFC編程.ppt_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、MFC編程,Microsoft提供的MFC是放置Windows API的面向?qū)ο蠓庋b的類庫。MFC(Microsoft Foundation Class)6.0版本封裝了大約200個類,其中一些我們可以直接使用,而另一些則主要作為我們自己的類的基礎(chǔ)類。一些MFC類極其簡單,例如CPoint類,它代表一個點(diǎn)(如左鍵消息,畫直線和橢圓)。有些類比較復(fù)雜,如:CWnd類,它封裝了窗口的功能。在MFC程序中,我們并不經(jīng)常直接調(diào)用Windows API;而是從MFC類的創(chuàng)建對象并調(diào)用屬于這些對象的成員函數(shù)。,1、MFC概述,MFC(Microsoft Foundation Class)是一個應(yīng)用程序的框

2、架結(jié)構(gòu)。MFC不僅僅是一個類集合,它還幫助定義了應(yīng)用程序的結(jié)構(gòu)并為應(yīng)用程序做了大量的輔助。MFC中的各種類結(jié)合起來構(gòu)成了應(yīng)用程序框架,它的目的是讓開發(fā)者在此基礎(chǔ)上來建立Windows下的應(yīng)用程序。MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,開發(fā)者所要做的就是通過預(yù)定義的接口把具體的應(yīng)用程序特有的內(nèi)容完成。Microsoft Visual C+提供了相應(yīng)的工具來完成這個工作。,(1)AppWizard可以用來生成初步的框架文件(代碼和 資源等)。 (2)資源編輯器用來幫助直觀地設(shè)計用戶接口。 (3) ClassWizard用來協(xié)助添加代碼到框架文件。 (4)最后,經(jīng)過編譯,通

3、過類庫實(shí)現(xiàn)了應(yīng)用程序特定的邏 輯。 如:在菜單中,添加菜單,點(diǎn)擊后彈出新對話框,左鍵消息,畫 直線、橢圓等 CDC *dc; dc=GetDC(); ReleaseDC(dc);,1.1、MFC編程的特點(diǎn),傳統(tǒng)的Windows編程是非常的麻煩和復(fù)雜的。從產(chǎn)生面向?qū)ο蟮某绦蛟O(shè)計后,對于編程者來說并需要知道對象有哪些屬性,也不需要知道對象本身的方法是如何實(shí)現(xiàn)的,而只需要調(diào)用對象所提供的方法來完成特定的功能,尤其是對象的很多方法對系統(tǒng)進(jìn)行了底層封裝,大部分的精力放在對對象的方法的調(diào)用上。 MFC的本質(zhì)是一個包含了許多微軟已定義好的對象的類庫,雖然我們要編寫的程序在功能上是千差萬別的,但從本質(zhì)上講,都

4、可以歸結(jié)為用戶界面的設(shè)計,對文件的操作、多媒體使用,數(shù)據(jù)庫的訪問等一些主要的方面。這一點(diǎn)是微軟提供MFC類庫的重要原因,在這個類庫中包含了,一百多個 程序開發(fā)過程中最常用的對象。在進(jìn)行程序設(shè)計 的時候,如果類庫中的某個對象能完成所需要的功能,我們只要簡單地調(diào)用已有對象的方法即可。我們還可以利用面向?qū)ο蠹夹g(shù)中很重要的繼承方法從類庫中的已有對象派生出我們自己的對象。這時派生出類的對象除了具有類庫中的對象的特性和功能之外,還可以根據(jù)需要加上我們自己的特性和方法,產(chǎn)生一個功能更強(qiáng)大的對象。當(dāng)然也可以在程序中創(chuàng)建全新的對象,并根據(jù)需要不斷完善對象的功能。 正是由于MFC編程方法充分利用了面向?qū)ο蠹夹g(shù)的優(yōu)

5、點(diǎn),它使得編程時極少需要關(guān)心對象方法的實(shí)現(xiàn)細(xì)節(jié),同時類庫中的各種對象的強(qiáng)大功能足以完成我們程序中的絕大部分功能,這使得開發(fā)者所需編寫的代碼大為減少,有力保證了程序良好的可調(diào)試性。,1.2、MFC類的分層結(jié)構(gòu),MFC提供了許多設(shè)計好的類來滿足廣泛的需要。大多數(shù)MFC類都是從CObject類中直接或間接地派生出來的。 CObject給那些繼承它的類提供了3個重要的特性: 串行化支持 運(yùn)行時類信息支持 診斷和調(diào)試支持 串行化是對象的永久性數(shù)據(jù)流出或流入存儲介質(zhì)(如磁盤文件)的進(jìn)程。把CObject類作為基類,可以創(chuàng)建可串行化的類,其實(shí)例容易存儲和重新創(chuàng)建。嵌入在CObject類中的診斷和調(diào)試支持允許

6、我們對CObject派生類的實(shí)例執(zhí)行有效性檢查,并將狀態(tài)信息轉(zhuǎn)儲到一個調(diào)試,窗口。 CObject對它的派生類還提供了其它好處。如:重載new和delete運(yùn)算符防止內(nèi)存泄露。如果從CObject派生類創(chuàng)建了一個對象,而沒有在應(yīng)用程序結(jié)束前刪除它,那么MFC將會在調(diào)試輸出窗口寫一條警告信息。,1.3、MFC程序結(jié)構(gòu)分析,MFC作為微軟應(yīng)用程序框架,舉足輕重。MFC是C+的 Win32PAI。更重要的是它提供了文檔/視圖框架:sdk(Software Development Kit, 即軟件開發(fā)工具包 )編程中的wndproc(窗口消息)也變成了方便的消息影射。 1)Windows程序的工作原理

7、 Windows程序設(shè)計是一種完全不同于傳統(tǒng)的DOS方式的程序設(shè)計方法,它是一種事件驅(qū)動方式的程序設(shè)計模式。在程序提供給用戶的界面中有許多可操作的可視對象。用戶可進(jìn)行操作,被選擇的操作會產(chǎn)生某些特定的事件,這些事件發(fā)生后的結(jié)果是向程序中的某些對象發(fā)出消息,然后這些對象調(diào)用相應(yīng)的消息處理函數(shù)來完成特定的操作。 Windows程序的最大特點(diǎn)是程序沒有固定的流程,而是針對某個事件的處理有特定的子流程。 2)建立應(yīng)用程序 按照應(yīng)用程序向?qū)В到y(tǒng)自動生成的應(yīng)用程序框架,我們要做的事情就是向這個應(yīng)用程序中添加必要的代碼以完成我們所需的功能。 3)程序結(jié)構(gòu)分析 使用MFC方式產(chǎn)生的應(yīng)用程序的4個主要類之間的

8、關(guān)系: CMYAPP類:用來處理消息的,它統(tǒng)一管理程序收到的所有消息,然后把消息分配到相應(yīng)的對象中。CMAINFRAME是CMYVIEW的父類,也就是說視窗VIEW顯示在主窗口CMAINFRAME的客戶區(qū)中。類CMYVIEW的作用是顯示數(shù)據(jù),而數(shù)據(jù)則是來自類CMYDOC,在MFC程序中,程序的數(shù)據(jù)是放在文檔中的,而顯示數(shù)據(jù)則是利用視窗方式,文檔與視窗分離帶來的好處就是一個文檔可以同時具有多個視窗,每個視窗只顯示文檔中的一部分?jǐn)?shù)據(jù),或者以特定的風(fēng)格顯示文檔的數(shù)據(jù)。文檔與視窗分離的另一個好處是程序中可以處理多個文檔,通過對不同視窗的處理達(dá)到對不同文檔分別處理的目的。 (1)類CMYAPP 類CMY

9、APP是應(yīng)用程序運(yùn)行的基礎(chǔ),這個類是由MFC中的類CWINAPP派生來的。在這個類中有一個重要的成員函數(shù)InitInstance,這個函數(shù)的作用是在生成一個新的實(shí)例的時候,完成一些初始化的工作。 類CMYAPP提供了用戶與Windows應(yīng)用程序之間的交流。在生成這個類的對象后,這個對象自動地把自身與Windows系統(tǒng)建立聯(lián)系,接收Windows傳送的消息,并交給程序中相應(yīng)的對象去處理,使得開發(fā)Windows程序變的簡單。,(2)類CMAINFRAME 類CMAINFRAME是MFC中的CFRAMEWND派生的, 所以它也是一個框架窗口。前面提到類CMAINFRAME是類CMYVIEW的父類,也

10、就是說CMYVIEW類對象顯示在主框架窗口的客戶區(qū)中。 在MFC程序中,我們并不需要經(jīng)常對類CMAINFRAME進(jìn)行操作,而是對視窗類進(jìn)行操作,達(dá)到對程序中的數(shù)據(jù)進(jìn)行編輯和修改的目的。 (3)類CMYVIEW與CMYDOC 把這兩個類放在一起介紹,是因?yàn)檫@兩個類密切相關(guān)。文檔是由文檔模板對象生成的,并由應(yīng)用程序?qū)ο蠊芾?,而用戶則是通過與文檔相聯(lián)系的視窗對象來存儲、管理應(yīng)用程序數(shù)據(jù),用戶與文檔之間的交互則是通過則是通過與文檔相關(guān)聯(lián)的視窗對象來進(jìn)行的。,1.4 MFC中的WinMain函數(shù),WinMain是Windows程序執(zhí)行的入口,與DOS程序的入口main的作用相同,在MFC程序中, Win

11、Main函數(shù)是隱藏的,當(dāng)WinMain函數(shù)結(jié)束或返回時,Windows應(yīng)用程序結(jié)束。,1.5 MFC庫消息影射,MFC庫應(yīng)用框架并沒有采用虛函數(shù)來處理Windows消息,而是通過一些宏來將特定的消息影射到派生類中相應(yīng)的成員函數(shù)。 ClassWizard會幫助我們將消息控制函數(shù)引入我們所設(shè)計的類中,只要我們從列表框中選擇一個Windows消息ID, ClassWizard會自動產(chǎn)生具有正確參數(shù)及返回值的代碼。,2 利用MFC AppWizard自動生成應(yīng)用程序,Visual C+6.0集成環(huán)境所提供的可視化編程工具(AppWizard和ClassWizard等)自動生成大量代碼,快速進(jìn)入可視化的

12、編程。 在Visual C+6.0集成環(huán)境中,工程是置于工作區(qū)的管理下,一個工作區(qū)可以管理多個工程,甚至不同類型的工程。同一個工作區(qū)中的工程之間相互獨(dú)立,但共用一個工作區(qū)的設(shè)置環(huán)境。在新建一個工程時,可以選擇是為該工程新建一個工作區(qū)還是加入當(dāng)前工作區(qū)。,2.1 Visual C+工程文件的組成,在用AppWizard創(chuàng)建的工程中包含了框架程序所有的類、全局變量的聲明和定義。如果用Windows資源管理器查看AppWizard工具自動創(chuàng)建的工作目錄,可以發(fā)現(xiàn)該目錄下會生成十幾個文件和兩個目錄,其中res目錄用于存放工程的資源文件。Debug目錄用于存放編譯、連接時產(chǎn)生的中間文件。 AppWiza

13、rd所創(chuàng)建的文件可以在指定的工程路徑下找到,每一種文件都有自己明確的作用 1)工作區(qū)文件和項(xiàng)目文件 工作區(qū)文件和項(xiàng)目區(qū)文件主要是用于保存和更新工作區(qū)和項(xiàng)目信息,主要包括下面幾個文件:,(1)TestMFC.dsw:這是MFC自動生成的工作區(qū)文件,它 包含當(dāng)前工作區(qū)中的項(xiàng)目信息。 (2)TestMFC.dsp:這是MFC生成的項(xiàng)目文件,它包含當(dāng)前項(xiàng)目的設(shè)置、所包含的文件等信息。 (3)TestMFC.clw:此文件包含ClassWizard中用來編輯的現(xiàn)有類或增加新類的信息。 ClassWizard還用這個文件來保存創(chuàng)建和編輯消息影射和對話框數(shù)據(jù)所需的信息,或是創(chuàng)建虛擬成員函數(shù)所需的信息。 2)應(yīng)用程序源文件和頭文件 根據(jù)應(yīng)用程序的類型-單文檔、多文檔或基于對話框的類型,AppWizard將創(chuàng)建下術(shù)應(yīng)用程序源文件和頭文件中的某些文件,這些文件是工程的主體,負(fù)責(zé)主框架、文檔、視圖和相關(guān)操作的具體實(shí)現(xiàn),主要包括下面幾個方面。,(1)TestMFC.h:這是應(yīng)用程序的主頭文件,它包含所有全局符號和用于包含其它頭文件的#include指令。 (2)TestMFC.cpp:這個文件是應(yīng)用程序的主源文件,它將創(chuàng)建CTestApp類的一個對象,并覆蓋InitInstance 成員函數(shù)。 (3)TestMFCDoc.cpp、Test

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論