MFC----微軟基礎類。微軟根據市場需要用C++開發出了一系列基於windows的類,這些類就以API類似的方式被使用者調用,縮短開發週期。
像DOS程式類似,每個基於MFC的使用者程式都有一個WinMain函數,該函數是應用程式的入口,其餘函數必須在該函數中被調用。但在visual stdio中卻看不到該函數,因為微軟應經將其封裝好了,利用嚮導產生架構程式過程中就應經完成了架構的構建和相關代碼的添加。在連結過程中,會將WinMain函數連結進應用程式。
每個MFC程式都有一個APP類,該類唯一的標示一個應用程式。應用程式中會定義一個theApp全域對象。在編譯器時,首先會初始化所有的全域變數,所以會調用它的建構函式,而它又是從其父類CWinApp派生的,進一步調用其父類的建構函式。在其建構函式中會調用調用_tWinMain()函數。該函數實際是通過AfxWinMain函數實現的,AFX代表應用程式架構函數,應用程式架構實際上是一套輔助產生應用程式的架構模型,該模型把多個類進行了一個有機的整合,可以根據模型提供的方案來設計自己的應用程式。以AFX開頭的函數都是全域函數。
MFC架構視窗
1、設計註冊視窗
MFC設計了一系列預設的視窗類別,只要調用和註冊這些視窗類別就可以了。由AfxEndDeferRegisterClass進行註冊。
2、建立視窗
視窗的建立功能由CWnd類的CreatEx函數實現。該函數的聲明在AFXWin.h檔案中,實現代碼在WINCORE.CPP檔案中。
3、顯示更新視窗
CTestApp類的InitInstance函數實現內部有如下代碼:
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
MFC程式運行過程
1、利用全域應用程式物件theApp啟動應用程式。
2、調用應用程式全域對象的建構函式完成應用程式的初始化工作。
3、進入WinMain函數。
4、進入訊息迴圈,當收到WM_QUIT訊息時,退出訊息迴圈,應用程式結束。
MFC SDI應用程式的基本架構
當用 App Wizard產生應用程式架構的時候,會產生4個基本應用程式類:CTest1App(應用程式類)、CMainFrame(主架構視窗類別)、CTest1Doc(文檔類)、CTest1View(視圖類)。
CTest1App類的作用是用來管理整個應用程式,完成應用程式的例行初始化,統一管理應用程式收到的訊息,並把訊息分配給應用程式的其他對象,最後完成應用程式的清理。
CMainFrame類負責管理程式的主視窗,包含標題列,狀態列,工具,最大化等功能。不需要使用者對此類進行操作,因為它繼承了windows對訊息處理的特性。
CTest1Doc類負責資料的讀入和寫出,並進行I/O操作,文檔類封裝了應用程式的資料管理功能。
CTest1View負責將讀入的資料進行顯示,該類和文檔類進行互動,它是架構視窗的子視窗。
類與類之間的互動是通過windows的訊息進行傳遞的,通過調用類的公有資料成員進行操作。