MFC(Microsoft Foundation Classes)是一套 C++ 類別庫,開發者透過使用、繼承與擴充適當的類別來實現特定功能。其核心架構包含五大核心物件:
CWinApp → CTappCDocument → CTDocCView → CTViewCMDIFrameWnd → CMainFrame(包含視窗、工具列、狀態列)CMDIChildWnd → CChildFrame專案中常用的 MFC 標準標頭檔會被預先編譯,產生 .pch 檔案(以專案命名)。編譯器處理 #include "stdafx.h" 前的程式碼時視為預編譯部分,遇到該指令後直接使用預編譯結果,後續程式碼才正常編譯。這能大幅縮短大型專案的建置時間。
| 維度 | MFC 物件 | Windows 物件 |
|---|---|---|
| 資料結構 | C++ 類別實例(MFC 或開發者定義) | Windows 系統內部結構,透過控制代碼引用 |
| 層次 | 高層封裝,隱藏底層細節 | 低層核心物件 |
| 建立方式 | 透過建構函數直接建立(堆疊或堆積) | 由對應 SDK 函數建立 |
| 生命週期 | 隨解構函數銷毀 | 需呼叫 Windows 系統函數銷毀(如 CDC 的 HDC 可能是釋放而非銷毀) |
| 可見性 | 僅對建立執行緒可見,進程間不可見 | 系統全域可見,跨進程可透過控制代碼傳遞訊息 |
傳統 Win32 API 開發遵循固定流程:
WinMain 進入點WndProc 處理訊息WinMain 中註冊視窗類別、建立視窗MFC 將此流程封裝於類別架構中,讓開發者專注於業務邏輯而非樣板代碼。