凝聚性強、組織化強的類庫就是Application Framework。一組合作無間的物件,彼此藉訊息的流動而溝通,並且互相呼叫對方的函式以求完成任務,這就是Application Framework。
Application Framework是一組超級的類庫,能夠被稱為Framework者必須是其中的類性質緊密咬合,互相呼應。
絕大部分類庫,往往以一個或兩個類,作為其它絕大部分類的基礎,MFC也一樣。CObject是萬類之首,凡派生自CObject者,得以繼承數個物件導向重要性質,包括RTTI(執行時型別識別)、Persistence(物件儲存)、Dynamic Creation(動態建立)、Diagnostic(錯誤診斷)。
MFC支援的資料處理類(collection classes)有:
異常處理有關的MFC類有以下11種:
凡派生自CWnd的類才能收到WM_視窗訊息(WM_COMMAND除外)。
所謂視窗handle和C++物件結盟,實際上是CWnd物件有一個成員變數m_hWnd,就放著對應視窗handle。所以,只要有CWnd物件或CWnd物件指標,就可以獲得其視窗handle。
HWND hWnd = pWnd->m_hWnd;
CCmdTarget是CWnd的父類。派生自它,類才能夠處理命令訊息WM_COMMAND。這個類是訊息對映以及命令訊息傳遞的大部分關鍵。
Document/View的觀念是希望把資料的本體和資料的顯示分開處理。由於檔案產生之際,必須動態建立Document/View/Frame三種物件,所以又必須由所謂的Document Template管理之。Document Template扮演黏膠的角色,把Document 和View 和其Frame(外框視窗)膠黏在一塊兒。
CDocument:當你為自己程式由CDocument派生出一個子類後,應該在其中加上成員變數,以容納檔案資料;並加上成員函式,負責修改檔案內容以及讀寫檔案。讀寫檔案由虛擬函式Serialize負責。
下面是幾個常見的Afx全域性函式:
CObject和CRuntimeClass中封裝了數個所謂的object services,包括“取得執行時的類資訊(RTTI)”、Serialization(檔案讀寫)、動態產生物件等等。所有派生自CObject的類,都繼承這些機能。
MFC針對這些機能定義了一些巨集:
MFC的訊息對映與命令傳遞由以下巨集完成:
MFC的大部分資料型別和一般的Win32程式所用的相同,下面是共用的資料型別:
下面是MFC獨特的資料型別: