MFC基本框架結構

2021-08-15 22:09:55 字數 2715 閱讀 8141



本文將剖析基於mfc的框架程式,**mfc框架程式的內部組織結構,mfc是微軟為了簡化程式設計師的開發工作而設計的一套c++類集合,利用這些類有

效地幫助程式設計師完成windows應用程式開發。

我們利用vs2008 ide建立乙個名為test的工程,程式型別選擇為單文件,其他預設不變,最終會生成一套**,這套**可以直接執行。

在生成的單

文件應用程式中,都有五個類,部分類名和工程名相關聯。圖1展示了ide嚮導生成的**結構示意圖以及對應的類功能。

圖1 **結構

量,該全域性變數就代表了這個應用程式本身;win32和mfc應用程式例項表示區別如下:

知識點:

2.以域作用符「::」開始的表示的函式,表明該函式是乙個全域性函式。

在執行而把我們自己建立的類和mfc類相關聯起來了。

1.全域性變數定義;程式入口函式

winmain

3.冊,建立,訊息迴圈、顯示,更新。

4.進入訊息迴圈,響應各種訊息,直到退出;mfc程式實際上是採用訊息對映機制,來完成各種訊息的處理,收到wm_quit訊息時,退出訊息迴圈。

圖2 mfc 執行流程示意圖

下面將給出mfc執行過程的**跟蹤,主要列出mfc框架涉及到的主要函式以及所在的檔名,具體的**流程可以自行debug跟蹤,並利用呼叫棧

完成函式跟蹤。

細緻函式跟蹤和分析,這不詳細給出,**跟蹤,如圖3所示。

圖3 **跟蹤

我們建立的mfc程式除了主框架視窗外,還有乙個視窗就是視類視窗,對應的是cview類。框架視窗是視類視窗的一

個父視窗,它

們的關係如圖4.紅色包圍的是主框架視窗,藍色包圍的是視視窗

圖4 主框架和視視窗的關係

微軟在設計基礎類庫時,採用資料儲存和資料顯示分離的模式,資料儲存由cdocument類完成,資料顯示和修改由cview類完成。

initstance方法中定義乙個單文件模板物件指標,該物件就把文件

類物件、框架類物件、視窗類物件有機地組織在一

起,接著利用adddoctemplate函式

把這個單文件模板新增到文件模板中,從而把這個三個類組織成為乙個整體,原始碼如下:

[cpp]view plain

copy

print

?loadstdprofilesettings(4);  // 載入標準 ini 檔案選項(包括 mru)

// 註冊應用程式的文件模板。文件模板

// 將用作文件、框架視窗和檢視之間的連線

csingledoctemplate* pdoctemplate;  

pdoctemplate = new csingledoctemplate(  

idr_mainframe,  

runtime_class(ctestdoc),  

runtime_class(cmainframe),       // 主 sdi 框架視窗

runtime_class(ctestview));  

if (!pdoctemplate)  

return false;  

adddoctemplate(pdoctemplate);  

loadstdprofilesettings(4);  // 載入標準 ini 檔案選項(包括 mru)

// 註冊應用程式的文件模板。文件模板

// 將用作文件、框架視窗和檢視之間的連線

csingledoctemplate* pdoctemplate;

pdoctemplate = new csingledoctemplate(

idr_mainframe,

runtime_class(ctestdoc),

runtime_class(cmainframe), // 主 sdi 框架視窗

runtime_class(ctestview));

if (!pdoctemplate)

return false;

adddoctemplate(pdoctemplate);

c++視窗類物件和視窗並不是一回事,它們之間唯一的關係式c++視窗類物件內部定義了乙個視窗控制代碼變數,儲存了與這個c++視窗

類物件相關的那個視窗控制代碼。視窗銷毀時,與之對應的c++視窗類物件銷毀與否,要看其生命週期是否結束。

但是c++視窗類物件銷

毀時,與之關聯的視窗也將銷毀。

springboot框架結構

dispatch2dao.xml templates.view 自定義包名 分類包名 html 頁面檔案 自定義 form 可用作 增 改 自定義 list 可用作 展示 自定義 view 可用作 檢視 base basecontroller 定義controller基類 base basedao ...

metasploit框架結構

輔助模組 aux 滲透攻擊模組 exploit 後攻擊模組 post 攻擊載荷模組 payloads 空指令模組 nops 編碼模組 encoders 規避 免殺 模組 evasion 載入其他模組 整合現有的一些外部安全工具 如nessus openvas漏洞掃瞄器等,為使用者介面提供一些新的功能...

Foundation框架 結構體

foundation框架 結構體 一 基本知識 foundation 基礎框架。框架中包含了很多開發中常用的資料型別,如結構體,列舉,類等,是其他ios框架的基礎。如果要想使用foundation框架中的資料型別,那麼包含它的主標頭檔案就可以了。即 import 補充 core foundation...