MFC的六大核心機制概述

2021-07-02 01:05:37 字數 1005 閱讀 9816

1、

mfc程式的初始化工作

在mfc中所有的類都**於乙個基類:cobject。mfc程式初始化過程中,其實就是虛函式的呼叫的過程,分清呼叫執行的到底是哪乙個具體的虛函式,是父類的虛函式,還是基類的虛函式,都是至關重要的。 2、

rtti執行時型別識別

mfc程式執行過程中需要對類的型別進行動態的判斷。在實現這乙個機制的方法是,在mfc中的每乙個類中都有乙個cruntimeclass類(《深入淺出mfc》中是這麼命名,具體mfc中具有這個功能的類的真實名稱,我還不知道),它用來記錄類的基本資訊,裡面包含了必要的一些資料資訊(比如類的名稱,父類指標,物件大小,以及維護乙個鍊錶的必須指標),最後通過將所有類的cruntimeclass以序列的方式串聯起來,構成乙個龐大的「類記錄表」。這樣在實際的程式執行時,當要判斷當前類的資訊時,就只要逐個比較類記錄表中各個類的資訊就可以確定到底是哪個類了。

3、dynamic creation(動態建立)

所謂的動態建立,我的理解是:在程式執行時,根據類名稱來建立類物件,而這種動態建立的實現還是需要依賴於前面的rtti中維護的「類記錄表」。

4、persistence機制

這個機制簡單的理解,就是一種能夠將所有型別的類記錄到檔案或者從檔案讀取到類的機制(可能理解的還不夠透徹,歡迎指正)。

mfc程式的執行是依賴於訊息傳遞的。所謂的message map(訊息對映表)其實就是在mfc整個類繼承關係圖中訊息傳遞攀爬的乙個圖,這個圖中有的訊息是從子類攀爬到父類這樣向上走的,也有的訊息會產生旁流的情況。從形式上來看,是通過類似於rtti、dynamic creation中定義巨集的方式,簡化訊息對映定義的方式的,如:declare_message_map、begin_message_map、on_command、end_message_map。

6、command routing命令繞行

mfc 對於訊息繞行的規定是: 如果是一般的windows 訊息(wm_***),一定是由衍生類別流向基礎類別,沒有旁流的可能。

如果是命令訊息wm_command,就有奇特的路線了:

MFC六大核心機制之二 執行時型別識別(RTTI)

typeid運運算元 執行時型別識別 rtti 即是程式執行過程中知道某個物件屬於某個類,我們平時用c 程式設計接觸的rtti一般是編譯器的rtti,即是在新版本的vc 編譯器裡面選用 使能rtti 然後載入typeinfo.h檔案,就可以使用乙個叫typeid 的運運算元,它的地位與在c 程式設計...

MFC六大核心機制之二 執行時型別識別(RTTI)

上一節講的是mfc六大核心機制之一 mfc程式的初始化,本節繼續講解mfc六大核心機制之二 執行時型別識別 rtti typeid運運算元 執行時型別識別 rtti 即是程式執行過程中知道某個物件屬於某個類,我們平時用c 程式設計接觸的rtti一般是編譯器的rtti,即是在新版本的vc 編譯器裡面選...

Qt 三大核心機制

訊號槽是qt物件間通訊的方法,主要通過connect 函式連線訊號函式和槽函式進行通訊 connect 是qobject類的乙個靜態函式 static qmetaobject connection connect const qobject sender,pointertomemberfunctio...