標籤:
凝聚性強、組織化強的類庫就是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獨特的資料類型:
【筆記】《深入淺出MFC》第5章 總觀Application Framework