MFC(Microsoft Foundation Class, 微軟基礎類庫)是微軟為了簡化程式師的開發工作所開發的一套C++類的集合, 是一套物件導向的函式程式庫, 以類的方式提供給使用者使用。 利用這些類, 可以有效地説明程式師完成Windows應用程式的開發。
MFC應用程式框架是一個標準的Windows應用程式, 包括視窗、功能表列、工具列。
1 MFC的文檔/視圖概念使用MFC編寫應用程式, 意味著要接受一種特有的程式結構, 其中應用程式資料是以特定的方式存儲和處理的。 這一點聽起來好像是一種限制, 但實際上幾乎完全不是;而且, 在速度和實現的簡易性方面得到的好處遠遠超過了任何能夠想像到的缺點。
文檔/視圖結構的基本出發點是將資料處理和資料的顯示相分離, 使每個類都能夠集中處理某一功能。 在文檔/視圖結構中, 有關資料處理的工作可以分為資料的管理和資料的視覺化兩部分, 文檔用於管理和維護資料, 視圖用於顯示和編輯資料。
文檔在MFC應用程式中代表了能夠被邏輯地組合在一起的一系列資料, 包括文本、圖形、圖像和表格資料, 其主要作用是把資料的處理從對使用者介面的處理中分離出來, 以便集中處理資料, 並同時提供了一些與其他類交互的介面。
文檔是應用程式中與使用者交互的資料集合。
程式中的文檔是作為文檔類的物件定義的。 文檔類是從MFC庫中的CDocument類派生的, 需要添加資料成員來存儲應用程式需要的資料, 還要添加成員函數來支援對資料的處理。 應用程式不僅限於單文檔類型;當應用程式中涉及若干不同種類的文檔時, 可以定義多個文檔類。
文檔類實際上就是資料類, 在應用程式中對資料的操作主要是在這個類中實現的, 如數據的讀取、存儲等,
以這種方式處理應用程式資料使MFC能夠提供標準的機制來管理作為整體的應用程式資料集合, 並在磁片上存儲這些資料。 這些機制是文檔類從CDocument類中繼承的, 因此在不編寫任何代碼的情況下, 就能使應用程式自動獲得大量功能。
可以選擇讓程式每次只處理一個文檔, 還是處理多個文檔。 MFC庫支援的單文檔介面(Single Document Interface, SDI), 用於每次只需要打開一個文檔的程式。 使用這種介面的程式稱為SDI應用程式。
對於需要一次打開多個文檔的程式而言, 保以使用多重文件介面(Multiple Document Interface, MDI).使用MDI, 程式不僅能夠打開類型相同的多個文檔, 還可以同時處理多個類型不同的文檔。
視圖是文檔資料在螢幕上的映射,
使用者可以通過視圖查看文檔,
也可以通過視圖修改文檔,
一個視圖總是與一個文檔物件相關聯,
使用者通過與文檔相關聯的視圖與文檔進行交互,
當用戶打開一個文檔時,
應用程式創建與之相關聯的視圖,
但一個文檔可以擁有多個視圖。
視圖總是與特定的文檔物件相關。 文檔物件包含程式中的一組應用資料, 而視圖物件可以提供一種機制來顯示文檔中存儲的部分或全部資料。 視圖定義了在視窗中顯示資料的方式以及與使用者交互的方式。 從MFC類CView派生就可以定義自己的視圖類。
對話方塊程式沒有視圖視窗和文檔物件等概念,
2.1 C/C++編譯器
2.2 資源編輯器和資源編譯器
2.3 連結器和調試器
2.4 應用程式嚮導
2.5 類嚮導
2.6 資源流覽器
3 基於MFC的Windows程式開發的4種工具3.1 首先使用MFC AppWizard嚮導來創建基本的程式碼;
3.2 在Class View中使用專案的上下文功能表, 給專案添加新的類和資源;
3.3 在Class View中使用專案的上下文功能表, 擴展並定制程式中已有的類。 主要是添加變數和函數;
3.4 使用Resource Editor創建或修改功能表和工具列這樣的物件。
創建MFC應用程式的最容易方法是使用MFC應用程式嚮導, 根據在嚮導中選擇的選項, MFC應用程式嚮導為應用程式生成適當的類和檔。
4 MFC應用程式嚮導主要步驟MFC AppWizard應用程式嚮導是一個創建基於微軟基礎類庫MFC的Windows應用程式的嚮導, 是VC最常用的嚮導工具,當用其創建一個項目時,可以自動生成一個MFC的應用程式框架。MFC將每個應用程式共同需要使用的代碼封裝起來,如完成預設程式初始化功能,建立應用程式介面和基本的Windows消息,簡化程式師做相同的重複工作。
MFC應用程式嚮導的每一個步驟中,我們都可以根據需要來選擇各種特性,從而實現定制應用程式。
主要步驟如下:
4.1 選擇MFC應用程式嚮導:MFC AppWizard[exe]
MFC應用程式嚮導是一個代碼生成器,其能夠創建一個是簡單的應用程式框架,該框架的結構和內容取決於在AppWizard嚮導中所做的選擇,AppWizard可以生成一個帶有類名、原始程式碼檔的Windows應用程式的框架。
4.2 選擇應用程式類型
Single document(單文檔),為應用程式創建一個單文檔介面(SDI)結構。在此類應用程式中,文檔的框架視窗只能容納一個文檔,也就是一次只允許在程式中打開一個檔,如記事本就是一個單文檔應用程式。
Multiple documents(多文檔),為應用程式創建一個多重文件介面(MDI)結構。在此類應用程式中,文檔的框架視窗可以容納多個文檔,也就是一次允許在程式中打開多個檔,如Word就是一個多文檔應用程式。
Dialog based(基於對話方塊),為應用程式創建一個基於對話方塊架構。一些簡單的工具一般採用基於對話方塊的形式,需要處理的資料一般包含在諸如編輯方塊、核取方塊、選項按鈕等控制項中。
4.3 是否選擇資料庫支援;
4.4 選擇複合文檔類型及其它支持;
4.5 選擇使用者介面功能,如工具列、狀態列等;
4.6 選擇工程樣式和MFC類庫使用方式;
4.7 提示建立的類;
通過上述步驟所做的選擇,確定的應用的類型、介面、功能。
應用程式嚮導在創建可執行程式時必須首先創建一個專案,並為此專案生成一系列檔,如標頭檔、原始檔案和資源檔等。這些檔都放在專案檔案夾內,它們各自發揮著不同的作用,如下表所示:
檔尾碼名檔案類型主要作用dsw工作區檔將專案的詳細情況組合到Workspace工作區中dsp專案檔案存儲專案的詳細情況並代替mak檔hC++標頭檔存儲類的定義代碼cppC++原始檔案存儲類的成員函數的實現代碼rc資源指令檔存儲功能表、工具列和對話方塊等資源rc2資源檔用來將資源包含到專案中ico圖示檔存儲應用程式圖示bmp點陣圖檔存儲點陣圖clwClassWizar類嚮導檔存儲Class Wizard類嚮導使用的類資訊nc沒有編譯的流覽檔保留Class View和Class Wizar使用的詳細情況6 標頭檔和原始檔案應用程式嚮導會根據應用程式的類型(單文檔、多文檔或基於對話方塊的程式)自動生成一些標頭檔和原始檔案。標頭檔用於定義類,包括指明基類、聲明成員變數和成員函數。原始檔案用來實現類,主要定義成員函數的實現代碼和消息機制。
主要包括:
框架視窗類
文檔類
視圖類
應用程式類
資源類
在一個VC專案中,資源通過資源識別字加以區別,如下表列出 MFC所規定的資源識別字首碼所表示的資源類型:
MFC應用程式嚮導的每一個步驟中,我們都可以根據需要來選擇各種特性,從而實現定制應用程式。
主要步驟如下:
4.1 選擇MFC應用程式嚮導:MFC AppWizard[exe]
MFC應用程式嚮導是一個代碼生成器,其能夠創建一個是簡單的應用程式框架,該框架的結構和內容取決於在AppWizard嚮導中所做的選擇,AppWizard可以生成一個帶有類名、原始程式碼檔的Windows應用程式的框架。
4.2 選擇應用程式類型
Single document(單文檔),為應用程式創建一個單文檔介面(SDI)結構。在此類應用程式中,文檔的框架視窗只能容納一個文檔,也就是一次只允許在程式中打開一個檔,如記事本就是一個單文檔應用程式。
Multiple documents(多文檔),為應用程式創建一個多重文件介面(MDI)結構。在此類應用程式中,文檔的框架視窗可以容納多個文檔,也就是一次允許在程式中打開多個檔,如Word就是一個多文檔應用程式。
Dialog based(基於對話方塊),為應用程式創建一個基於對話方塊架構。一些簡單的工具一般採用基於對話方塊的形式,需要處理的資料一般包含在諸如編輯方塊、核取方塊、選項按鈕等控制項中。
4.3 是否選擇資料庫支援;
4.4 選擇複合文檔類型及其它支持;
4.5 選擇使用者介面功能,如工具列、狀態列等;
4.6 選擇工程樣式和MFC類庫使用方式;
4.7 提示建立的類;
通過上述步驟所做的選擇,確定的應用的類型、介面、功能。
應用程式嚮導在創建可執行程式時必須首先創建一個專案,並為此專案生成一系列檔,如標頭檔、原始檔案和資源檔等。這些檔都放在專案檔案夾內,它們各自發揮著不同的作用,如下表所示:
檔尾碼名檔案類型主要作用dsw工作區檔將專案的詳細情況組合到Workspace工作區中dsp專案檔案存儲專案的詳細情況並代替mak檔hC++標頭檔存儲類的定義代碼cppC++原始檔案存儲類的成員函數的實現代碼rc資源指令檔存儲功能表、工具列和對話方塊等資源rc2資源檔用來將資源包含到專案中ico圖示檔存儲應用程式圖示bmp點陣圖檔存儲點陣圖clwClassWizar類嚮導檔存儲Class Wizard類嚮導使用的類資訊nc沒有編譯的流覽檔保留Class View和Class Wizar使用的詳細情況6 標頭檔和原始檔案應用程式嚮導會根據應用程式的類型(單文檔、多文檔或基於對話方塊的程式)自動生成一些標頭檔和原始檔案。標頭檔用於定義類,包括指明基類、聲明成員變數和成員函數。原始檔案用來實現類,主要定義成員函數的實現代碼和消息機制。
主要包括:
框架視窗類
文檔類
視圖類
應用程式類
資源類
在一個VC專案中,資源通過資源識別字加以區別,如下表列出 MFC所規定的資源識別字首碼所表示的資源類型: