框架原理第一講,熟悉常用的設計方式.(以MFC框架講解)


          框架原理第一講,熟悉常用的設計方式.(以MFC框架講解)

一丶什么是框架,以及框架的作用

什么是框架?

  框架,簡而言之就是把東西封裝好了,使用框架開發可以快速開發程序,例如MFC程序的雙擊寫代碼.

為什么講解框架原理

1.熟悉框架可以跟隨時代腳步,因為框架萬變不離其宗

2.熟悉框架,可以更快更好的逆向.

比如現在我們知道的QQ界面.

界面就是DUILIB框架寫的.我們要通過逆向找到關鍵的內容必須熟悉框架.如果不熟悉框架,你就算會逆向也不知道從哪里入手.

 

二丶通過MFC但文檔,理解其設計方式.

因為是第一講,所以從頭講起.

MFC單文檔框架其底層是封裝的SDK的消息循環

首先我們要實現自己的框架,就要封裝類了.怎么封裝,或者說哪里比較困難?

1. API調用困難,所以封裝

2. API參數多,所以封裝.

3. 處理消息回調.

API調用困難,我們可以封裝成一個類

處理消息回調.我們也可以封裝成一個類,

既然封裝成類,那么就要使用虛函數進行操作了.

1.首先封裝WMain函數

2.每個類都要有一個公公的父類,這樣可以添加公共接口.但是注意,一旦添加了就不好刪除了.

 

三丶類代碼設計.

根據MFC單文檔框架可以得出繼承關系圖.

從最基礎的框架看起,只有一個三個類

1.公共父類CObject  

2.消息處理類,CcmdTarGet  響應消息

  2.1 CWinThread    消息處理

  2.2 CWinApp     應用程序初始化,顯示窗口

代碼實現.

一丶實現類的關系圖繼承

首先按照繼承關系圖.添加類

父類 CMyObject  消息處理類CMycmdTarGet 消息回調類 CMyWinThread 應用程序初始化類  CMyWinApp

以及用戶新建的類 CTestWinApp,前面幾個類只是模擬MFC框架,自己定義的類,當我們用應用程序向導建立類的時候.則會生成自己的類(CTestWinApp)並且繼承自CMyWinAPP

二丶封裝WMain函數

按照MFC但文檔的框架

1.封裝WinMain

2.自己的WMain中執行初始化代碼.初始化用戶的全局對象

因為我們顯示窗口或者注冊窗口的時候,需要調用用戶的InitInstance進行初始化.

所以用戶的類定義為全局變量.

,MyWmain里面執行用戶的InitInstance

3.用戶的InITinstance里面執行注冊窗口類,顯示窗口類.

添加的時候會遇到的問題

1.窗口過程函數沒有.這個需要封裝,但是因為是第一講,所以暫時不封裝

2.實例句柄沒有,這個時候我們需要保存一下實例句柄

 

定義一個接口即可.

注意: 窗口過程回調函數一定是要又默認的回調.不然不管你怎么注冊窗口類,更新窗口類都會出錯的.

現在我們的工程已經支持顯示一個窗口了.但是並沒有消息循環.

4.添加消息循環,響應消息

消息循環我們要添加到我們自己封裝的Wmain中,當執行用戶的Inininstance成功創建窗口的時候.

此時就該進行消息循環了.

4.1添加虛函數在消息類中.並實現

4,2 自己封裝的wmain進行調用.

我們最基礎的框架已經搭建完成.

 

完整代碼下載:

鏈接:https://pan.baidu.com/s/1pKVViZp 密碼:2rsz

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM