三.程序結構大剖析
在前面我分別給出了SDK和MFC應用程序的框架,並且稍微理了一下它們之間的對應關系。但是對於MFC程序來說,要想真正搞懂它的框架的話,還是不夠的。現在我要做的事就是繼續去分析一下上面的MFC程序,期望能夠如我的標題所言,明明白白的看透MFC的應用程序框架。
首先就是看一下應用向導生成的MFC應用程序都有哪些主要的文件,包含哪些類以及相關類的對應功能和他們之間的關系(再次說明,因為我在這裡關心的是程序的框架結構,所以對於一些與話題關系不很大的東西我將會略去不提)。
在上面的SDI應用程序中,向導為我們生成了4個主要的類,這些類都是MFC類的派生類,分別包含在對應的頭文件以及實現文件中。
1、框架窗口類及其相關的文件
框架窗口類對應應用程序的主窗口,明白這一點後就可以建立一個對這個類的感性認識了,他的定義是在頭文件MainFrm.h中,而實現則是在MainFrm.cpp文件中。所有與框架窗口向光的功能都是在這裡定義和實現的。
2、文檔類及其相關的文件
文檔類在應用程序中沒有直觀的對應關系,但是,我們應該知道的一點就是MFC的框架的一個特點就是文檔/視圖結構。這裡可以抽象一點地來理解,比如說我們在Word中打開了一個文件,其實,這個文件就是文檔,而我們看到的只不過是這個文件一個視圖,所以說文檔提供了應用程序顯示的支持,但是我們真正看到的應用程序顯示的則是一個視圖,文檔類的定義是在“Hello WorldDoc.h”中,而他的實現則是在“Hello WorldDoc.cpp”文件中。
3、視圖類及其相關的文件
視圖類是用來顯示文檔對象的內容的,我們在Word程序中所看到的界面就是一個視圖,我們要修改,畫圖首先操作的對象就是視圖,所以,視圖類就如他的名稱所指出的那樣,提供了從用戶角度看到的東西。視圖類的定義在“Hello WorldView.h”中,實現是在文件“Hello WorldView.h”中。
4、應用程序類及其相關的文件
MFC應用程序的初始化,啟動運行和結束都是由應用程序對象完成的。他對應的文件是”Hello World.cpp”和”Hello World.h”。
在大致的了解了應用程序對象的作用之後,現在我們來看看它們之間的關系(如下圖所示)。
從上面的圖中可以大致的看出MFC應用程序對象之間的關系了。應用程序一開始(此處的內容可以參考上一篇)生成應用程序對象,然後,在InitInstance中創建中將會創建文檔模板對象(通過CdocManager管理),這樣一來,應用程序就可以通過建立的模板對象來管理文檔、視圖、和框架窗口。