1,按照慣例,MFC庫類名用大寫“C”打頭。
2,類CMyApp的對象theApp就代表一個應用程式。當運行該應用程式的時候,WINDOWS自動調用程式架構內部的WinMain函數,WinMain函數會去尋找該應用程式的全域構造對象(theApp),該對象是有CWinApp類衍生類別的對象。C++中,全域對象在主程式被運行之前就已經構造好了。
3,當WinMain發現該應用程式物件(theApp)時,會自動調用虛擬成員函數CWinApp::InitInstance(),該函數會進一步調用相應的函數來完成主視窗的構造和顯示工作。由於基類CWinApp中不知道我們實際需要的什麼樣的視窗,所以我們必須在派生出的應用程式類CMyApp中重載InitInstance()函數(CMyApp::InitInstance()),由多態性,當調用CWinApp::InitInstance()時候,會自動轉向MyApp::InitInstance().
4,WinMain函數調用完InitInstance()函數後,就調用CWinApp::Run函數,CWinApp::Run函數被隱藏在基類中負責傳遞應用程式的訊息給相應的視窗,從而維護應用程式的運轉。
5,關閉應用程式(對單一架構程式來說),首先CMyFrame 對象被刪除,然後退出Run,進而退出WinMain,最後刪除CMyApp對象(theApp)。
6,一些Windows類庫在基類為滑鼠事件訊息以及其他一些標準訊息定義一些虛函數,如果需要,衍生類別會對這些函數進行重載。
MFC庫應用程式架構沒有採用虛函數來處理Windows訊息,而是通過一些宏來將特定的訊息映射到衍生類別中相應的成員函數上。(原因:P21。C++類對程式中用到的每一個衍生類別都要求有一張虛函數分發表VTABLE,在BTABLE中每個虛函數都需要有一個4位元組的入口項,而不管該函數會不會在衍生類別中被重載。)
MFC訊息控制項函數要求提供函數原型,函數體,以及在訊息映射中的入口。
7,文檔-視圖結構將資料從使用者對資料的觀察中分離出來,這樣就允許對同一資料可以有多個視圖。
MFC庫應用程式中,文檔和視圖是由C++類的執行個體來描述的。
文檔基類代碼通常和FILE OPEN,FILE SAVE功能表項目關聯,而派生文檔類則一般用來完成對文檔對象資料的實際讀寫工作。
視圖基類通常表示一個包含於架構視窗中的視窗,而派生視圖類則常用來和穩當類相聯絡,負責應用程式的顯示和印表機I/O。
派生視圖類及其基類共同處理WINDOWS的訊息,而MFC庫則協調文檔,視圖,架構視窗,以及應用程式之間的相互作用關係,這種協調多用虛函數來實現。
文檔對象既可以與一次可全部讀入記憶體的磁碟檔案相關聯,也可以同資料庫相關聯。