第2章c++面向?qū)ο缶幊蘝第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 6 章 MFC原理與方法,一個優(yōu)秀的編程工具往往匹配一個功能強大的類庫,類庫封裝了大量Windows編程需要使用的函數(shù)和數(shù)據(jù)結(jié)構(gòu)。與Visual C++捆綁在一起的MFC(Microsoft Foundation Class)微軟基礎(chǔ)類就是這樣一個由Microsoft公司設(shè)計的類庫。采用MFC方式編程提高了Windows應(yīng)用程序的開發(fā)效率,但由于MFC應(yīng)用程序結(jié)構(gòu)的復雜性和透明性,要想完全掌握MFC應(yīng)用程序的內(nèi)部機制需要付出

2、很大的努力。 認識MFC只是一個過程、一個手段,最終目的是為了良好并熟練地運用MFC。,本章主要學習內(nèi)容:Windows的編程機制MFC的基本原理和使用方法:MFC類MFC應(yīng)用程序框架MFC消息管理MFC宏常用的MFC類,6.1 Windows編程機制,Windows是一個多進程的圖形窗口操作系統(tǒng),Windows應(yīng)用程序與DOS應(yīng)用程序有很大的區(qū)別。DOS應(yīng)用程序采用順序執(zhí)行過程,而Windows是一個基于事件

3、的消息(Message)驅(qū)動系統(tǒng)。Windows應(yīng)用程序是按照“事件→消息→處理”非順序的機制運行。當有某個事件(如單擊鼠標、鍵盤輸入和執(zhí)行菜單命令等)發(fā)生時,Windows會根據(jù)具體的事件產(chǎn)生對應(yīng)的消息,并發(fā)送到指定應(yīng)用程序的消息隊列;應(yīng)用程序從消息隊列中取出消息,并根據(jù)不同的消息進行不同的處理。,所謂消息就是用于描述某個事件發(fā)生的信息,而事件是對于Windows的某種操作。事件和消息密切相關(guān),事件是因,消息是果,事件產(chǎn)生消息,消

4、息對應(yīng)事件。所謂消息的響應(yīng),其實質(zhì)就是事件的響應(yīng)。消息驅(qū)動是Windows應(yīng)用程序的核心,所有的外部響應(yīng)(如鍵盤、鼠標和計時器等)都被Windows先攔截,轉(zhuǎn)換成消息后再發(fā)送到應(yīng)用程序中的目標對象,應(yīng)用程序根據(jù)消息的具體內(nèi)容進行處理。消息不僅可由Windows發(fā)出,它也可由應(yīng)用程序本身或其它程序產(chǎn)生。Windows為每一個應(yīng)用程序都維護一個或多個消息隊列,發(fā)送到每個程序窗口的消息都排成一個隊列。,事件和消息,消息隊列和在應(yīng)用程序中的

5、輪詢處理,Windows消息分為三種類型:,標準Windows消息:以WM_前綴(但不包括WM_COMMAND)開始的消息,包括鼠標消息、鍵盤消息和窗口消息,如WM_MOVE 、WM_PAINT等。控件通知(Control Notification)消息:對控件操作引起的消息,是控件和子窗口向其父窗口發(fā)出的WM_COMMAND通知消息。例如,當用戶修改了編輯控件中的文本后,編輯控件向其父窗口發(fā)送WM_COMMAND通知消息。命令(C

6、ommand)消息:由菜單項、工具欄按鈕、快捷鍵等用戶界面對象發(fā)出的WM_COMMAND消息。命令消息與其它消息不同,它可被更廣泛的的對象如文檔、文檔模板、應(yīng)用程序?qū)ο?、窗口和視圖等處理。,typedef struct tagMSG { HWND hWnd; // 目標窗口句柄 UINT message;// 消息標識 WPARAM wParam;// 消息參數(shù)1(附加信息,16

7、位) LPARAM lParam;// 消息參數(shù)2(附加信息,32位) DWORD time;// 消息發(fā)送時間 POINT pt; // 消息發(fā)送時鼠標的屏幕坐標} MSG;,消息用MSG結(jié)構(gòu)表示:,利用Windows API開發(fā)程序的用戶有這樣的體會,即使開發(fā)一個簡單的Windows應(yīng)用程序也需要對Windows的編程原理有很深刻的認識,需要手工編寫冗長的代碼。由于程序的出錯率是

8、隨著代碼長度的增加呈幾何級數(shù)增長的,而且當程序長度逐漸膨脹時,調(diào)試程序會變得越來越困難。因此,傳統(tǒng)的Windows應(yīng)用程序設(shè)計需要程序員有極大的耐心和豐富的編程經(jīng)驗。 Visual C++捆綁了微軟的基礎(chǔ)類MFC,編程時我們就可以利用類的可重用性和可擴充性,大大降低Windows應(yīng)用程序設(shè)計的難度和工作量。,6.2 MFC微軟基礎(chǔ)類,6.2.1 MFC概述,類庫是一個可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的C++類的集合。 MFC作

9、為一個Windows編程類庫,它包含了200多個類,封裝了Windows的大部分編程對象以及與它們有關(guān)的操作。雖然程序在功能上千差萬別,但從本質(zhì)上看,都可以分為用戶界面設(shè)計、文件操作、數(shù)據(jù)庫訪問及多媒體使用等幾部分,這些都可以通過一些類來實現(xiàn)。MFC提供了一個標準化的程序結(jié)構(gòu),使開發(fā)人員不必從頭設(shè)計一個Windows應(yīng)用程序。MFC實際上是一個龐大的文件庫,它由幾百個執(zhí)行文件和源代碼文件(如H文件)組成。,使用標準化的程序代碼結(jié)構(gòu),

10、有利于程序員之間的交流。Visual C++為MFC提供了大量的工具支持,提高了編程效率。如利用MFC AppWizard創(chuàng)建MFC應(yīng)用程序框架,利用ClassWizard方便地對Windows消息進行管理。MFC應(yīng)用程序的效率較高,只比傳統(tǒng)的Windows C程序低5%左右。并且,在MFC應(yīng)用程序中還允許混合使用傳統(tǒng)的Windows API函數(shù)。其它優(yōu)勢:完全支持Windows所有的函數(shù)、控件、消息、菜單及對話框;具有良好的穩(wěn)定

11、性和可移植性,更符合微軟的風格等。,采用MFC編程的優(yōu)點:,6.2.2 MFC體系結(jié)構(gòu),MFC主要組成部分:類、宏和全局函數(shù)。類是MFC中最主要的內(nèi)容。MFC類是以層次結(jié)構(gòu)方式組織起來的。MFC中的類分成兩部分,除了一些輔助類,大多數(shù)的MFC類是直接或間接從根類CObject派生而來。幾乎每一個派生層次都與一具體的Windows實例相對應(yīng),如文檔類、窗口類和視圖類等。MFC宏主要功能:消息映射、運行時對象類型服務(wù)、診斷服務(wù)、異常

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論