

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 6 章 MFC原理與方法,一個(gè)優(yōu)秀的編程工具往往匹配一個(gè)功能強(qiáng)大的類庫(kù),類庫(kù)封裝了大量Windows編程需要使用的函數(shù)和數(shù)據(jù)結(jié)構(gòu)。與Visual C++捆綁在一起的MFC(Microsoft Foundation Class)微軟基礎(chǔ)類就是這樣一個(gè)由Microsoft公司設(shè)計(jì)的類庫(kù)。采用MFC方式編程提高了Windows應(yīng)用程序的開(kāi)發(fā)效率,但由于MFC應(yīng)用程序結(jié)構(gòu)的復(fù)雜性和透明性,要想完全掌握MFC應(yīng)用程序的內(nèi)部機(jī)制需要付出
2、很大的努力。 認(rèn)識(shí)MFC只是一個(gè)過(guò)程、一個(gè)手段,最終目的是為了良好并熟練地運(yùn)用MFC。,本章主要學(xué)習(xí)內(nèi)容:Windows的編程機(jī)制MFC的基本原理和使用方法:MFC類MFC應(yīng)用程序框架MFC消息管理MFC宏常用的MFC類,6.1 Windows編程機(jī)制,Windows是一個(gè)多進(jìn)程的圖形窗口操作系統(tǒng),Windows應(yīng)用程序與DOS應(yīng)用程序有很大的區(qū)別。DOS應(yīng)用程序采用順序執(zhí)行過(guò)程,而Windows是一個(gè)基于事件
3、的消息(Message)驅(qū)動(dòng)系統(tǒng)。Windows應(yīng)用程序是按照“事件→消息→處理”非順序的機(jī)制運(yùn)行。當(dāng)有某個(gè)事件(如單擊鼠標(biāo)、鍵盤輸入和執(zhí)行菜單命令等)發(fā)生時(shí),Windows會(huì)根據(jù)具體的事件產(chǎn)生對(duì)應(yīng)的消息,并發(fā)送到指定應(yīng)用程序的消息隊(duì)列;應(yīng)用程序從消息隊(duì)列中取出消息,并根據(jù)不同的消息進(jìn)行不同的處理。,所謂消息就是用于描述某個(gè)事件發(fā)生的信息,而事件是對(duì)于Windows的某種操作。事件和消息密切相關(guān),事件是因,消息是果,事件產(chǎn)生消息,消
4、息對(duì)應(yīng)事件。所謂消息的響應(yīng),其實(shí)質(zhì)就是事件的響應(yīng)。消息驅(qū)動(dòng)是Windows應(yīng)用程序的核心,所有的外部響應(yīng)(如鍵盤、鼠標(biāo)和計(jì)時(shí)器等)都被Windows先攔截,轉(zhuǎn)換成消息后再發(fā)送到應(yīng)用程序中的目標(biāo)對(duì)象,應(yīng)用程序根據(jù)消息的具體內(nèi)容進(jìn)行處理。消息不僅可由Windows發(fā)出,它也可由應(yīng)用程序本身或其它程序產(chǎn)生。Windows為每一個(gè)應(yīng)用程序都維護(hù)一個(gè)或多個(gè)消息隊(duì)列,發(fā)送到每個(gè)程序窗口的消息都排成一個(gè)隊(duì)列。,事件和消息,消息隊(duì)列和在應(yīng)用程序中的
5、輪詢處理,Windows消息分為三種類型:,標(biāo)準(zhǔn)Windows消息:以WM_前綴(但不包括WM_COMMAND)開(kāi)始的消息,包括鼠標(biāo)消息、鍵盤消息和窗口消息,如WM_MOVE 、WM_PAINT等??丶ㄖ–ontrol Notification)消息:對(duì)控件操作引起的消息,是控件和子窗口向其父窗口發(fā)出的WM_COMMAND通知消息。例如,當(dāng)用戶修改了編輯控件中的文本后,編輯控件向其父窗口發(fā)送WM_COMMAND通知消息。命令(C
6、ommand)消息:由菜單項(xiàng)、工具欄按鈕、快捷鍵等用戶界面對(duì)象發(fā)出的WM_COMMAND消息。命令消息與其它消息不同,它可被更廣泛的的對(duì)象如文檔、文檔模板、應(yīng)用程序?qū)ο蟆⒋翱诤鸵晥D等處理。,typedef struct tagMSG { HWND hWnd; // 目標(biāo)窗口句柄 UINT message;// 消息標(biāo)識(shí) WPARAM wParam;// 消息參數(shù)1(附加信息,16
7、位) LPARAM lParam;// 消息參數(shù)2(附加信息,32位) DWORD time;// 消息發(fā)送時(shí)間 POINT pt; // 消息發(fā)送時(shí)鼠標(biāo)的屏幕坐標(biāo)} MSG;,消息用MSG結(jié)構(gòu)表示:,利用Windows API開(kāi)發(fā)程序的用戶有這樣的體會(huì),即使開(kāi)發(fā)一個(gè)簡(jiǎn)單的Windows應(yīng)用程序也需要對(duì)Windows的編程原理有很深刻的認(rèn)識(shí),需要手工編寫冗長(zhǎng)的代碼。由于程序的出錯(cuò)率是
8、隨著代碼長(zhǎng)度的增加呈幾何級(jí)數(shù)增長(zhǎng)的,而且當(dāng)程序長(zhǎng)度逐漸膨脹時(shí),調(diào)試程序會(huì)變得越來(lái)越困難。因此,傳統(tǒng)的Windows應(yīng)用程序設(shè)計(jì)需要程序員有極大的耐心和豐富的編程經(jīng)驗(yàn)。 Visual C++捆綁了微軟的基礎(chǔ)類MFC,編程時(shí)我們就可以利用類的可重用性和可擴(kuò)充性,大大降低Windows應(yīng)用程序設(shè)計(jì)的難度和工作量。,6.2 MFC微軟基礎(chǔ)類,6.2.1 MFC概述,類庫(kù)是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的C++類的集合。 MFC作
9、為一個(gè)Windows編程類庫(kù),它包含了200多個(gè)類,封裝了Windows的大部分編程對(duì)象以及與它們有關(guān)的操作。雖然程序在功能上千差萬(wàn)別,但從本質(zhì)上看,都可以分為用戶界面設(shè)計(jì)、文件操作、數(shù)據(jù)庫(kù)訪問(wèn)及多媒體使用等幾部分,這些都可以通過(guò)一些類來(lái)實(shí)現(xiàn)。MFC提供了一個(gè)標(biāo)準(zhǔn)化的程序結(jié)構(gòu),使開(kāi)發(fā)人員不必從頭設(shè)計(jì)一個(gè)Windows應(yīng)用程序。MFC實(shí)際上是一個(gè)龐大的文件庫(kù),它由幾百個(gè)執(zhí)行文件和源代碼文件(如H文件)組成。,使用標(biāo)準(zhǔn)化的程序代碼結(jié)構(gòu),
10、有利于程序員之間的交流。Visual C++為MFC提供了大量的工具支持,提高了編程效率。如利用MFC AppWizard創(chuàng)建MFC應(yīng)用程序框架,利用ClassWizard方便地對(duì)Windows消息進(jìn)行管理。MFC應(yīng)用程序的效率較高,只比傳統(tǒng)的Windows C程序低5%左右。并且,在MFC應(yīng)用程序中還允許混合使用傳統(tǒng)的Windows API函數(shù)。其它優(yōu)勢(shì):完全支持Windows所有的函數(shù)、控件、消息、菜單及對(duì)話框;具有良好的穩(wěn)定
11、性和可移植性,更符合微軟的風(fēng)格等。,采用MFC編程的優(yōu)點(diǎn):,6.2.2 MFC體系結(jié)構(gòu),MFC主要組成部分:類、宏和全局函數(shù)。類是MFC中最主要的內(nèi)容。MFC類是以層次結(jié)構(gòu)方式組織起來(lái)的。MFC中的類分成兩部分,除了一些輔助類,大多數(shù)的MFC類是直接或間接從根類CObject派生而來(lái)。幾乎每一個(gè)派生層次都與一具體的Windows實(shí)例相對(duì)應(yīng),如文檔類、窗口類和視圖類等。MFC宏主要功能:消息映射、運(yùn)行時(shí)對(duì)象類型服務(wù)、診斷服務(wù)、異常
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++面向?qū)ο?oop)
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)第5版
- 面向?qū)ο骳++習(xí)題參考解答
- c++面向?qū)ο髮?shí)例題集錦
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)
- 《易飛揚(yáng)面向?qū)ο缶幊獭返?版
- c++課程設(shè)計(jì)-- c++面向?qū)ο蟪绦蛟O(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)與c++
- 面向?qū)ο蟪绦蛟O(shè)計(jì)題庫(kù)(c++)
- c++面向?qū)ο笳n程設(shè)計(jì)報(bào)告
- c++面向?qū)ο笞钥荚囶}
- c++面向?qū)ο蠛?jiǎn)易圖形編輯器
- 面向?qū)ο蟪绦蚣夹g(shù)(c++)教學(xué)大綱
- c++編程規(guī)范
- c++高級(jí)編程
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)模擬試題打印
- c++編程規(guī)范
- 面向?qū)ο蟪绦蛟O(shè)計(jì)c++課后題答案
- 第02章 c++語(yǔ)言基礎(chǔ)
- 標(biāo)準(zhǔn)C的面向?qū)ο缶幊棠芰U(kuò)展.pdf
評(píng)論
0/150
提交評(píng)論