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

凝聚性強、組織化強的類庫就是Application Framework。一組合做無間的對象,彼此藉消息的流動而溝通,而且互相調用對方的函數以求完成任務,這就是Application Framework。函數

Application Framework是一組超級的類庫,可以被稱爲Framework者必須是其中的類性質緊密咬合,互相呼應。spa

絕大部分類庫,每每以一個或兩個類,做爲其它絕大部分類的基礎,MFC也同樣。CObject是萬類之首,凡派生自CObject者,得以繼承數個面向對象重要性質,包括RTTI(運行時類型識別)、Persistence(對象保存)、Dynamic Creation(動態建立)、Diagnostic(錯誤診斷)。指針

MFC支持的數據處理類(collection classes)有:對象

異常處理有關的MFC類有如下11種:blog

凡派生自CWnd的類才能收到WM_窗口消息(WM_COMMAND除外)。繼承

所謂窗口handle和C++對象結盟,其實是CWnd對象有一個成員變量m_hWnd,就放着對應窗口handle。因此,只要有CWnd對象或CWnd對象指針,就能夠得到其窗口handle。get

HWND hWnd = pWnd->m_hWnd;io

CCmdTarget是CWnd的父類。派生自它,類纔可以處理命令消息WM_COMMAND。這個類是消息映射以及命令消息傳遞的大部分關鍵。class

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獨特的數據類型:

相關文章
相關標籤/搜索