【筆記】《深入淺出MFC》第5章 總觀Application Framework

QingLiXueShi發表於2015-11-22

凝聚性強、組織化強的類庫就是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獨特的資料型別:

相關文章