MFC中的六大關鍵技術

2021-06-27 05:37:46 字數 1009 閱讀 7161

**: 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六大關鍵技術之 三 動態建立

動態建立就是執行時建立指定類的物件,在mfc中大量使用。如框架視窗物件 視物件,還有文件物件都需要由文件模板類物件來動態的建立。我覺得這是每個mfc的學習者很希望理解的問題。初次接觸mfc的時候,很容易有這樣的迷惘。mfc的幾大類不用我們設計也就罷了,但最疑惑的是不用我們例項化物件。本來最直觀的理解...

MFC六大關鍵技術之執行時型別識別

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

追根究底,MFC六大關鍵技術剖析(三)

三 動態建立 動態建立就是執行時建立指定類的物件,在mfc中大量使用。如框架視窗物件 視物件,還有文件物件都需要由文件模板類物件來動態的建立。我覺得這是每個mfc的學習者很希望理解的問題。初次接觸mfc的時候,很容易有這樣的迷惘。mfc的幾大類不用我們設計也就罷了,但最疑惑的是不用我們例項化物件。本...