[MFC] VS2013版本MFC工程移植到VC6.0上


 

:VS雖號稱“宇宙最強IDE”,但是有時候安裝包太大,動不動就幾個G;而且安裝好之后也會多出很多幾乎很難用到的部分,這對於那些處女座的人如何忍受!本文不是吐槽,而是給出一種在應急場景下,不用安裝新版本幾個G的IDE,而是將高版本的工程移植到低版本的IDE中,並使其工作和調試的解決方法~

 

VS2013版本MFC工程移植到VC6.0上

 

1、場景再現

我最近搞了個ubuntu系統,並在virtualbox中裝了個win7用於安裝設計PCB和嵌入式集成開發環境Keil。項目需要,得用到我之前寫的一個將圖片通過串口燒寫到硬件flash的小應用程序,但是我之前備份的工程中並沒有.exe程序,因此需要重新編譯!可是由於事發突然,下載一個VS2013的安裝包並安裝顯然“黃瓜菜都涼了”~於是我就大膽試了一下將高版本的程序轉換到低版本上。

 

 

2、工程分析

下圖是高版本IDE環境下的MFC工程文件結構。其中com.c和com.h是串口相關的文件,這兩個文件屬於MFC框架外添加的自定義文件(類),對於該類文件,可以直接在目標工程中添加即可;resource.h和*.rc文件是和資源相關的(比如:窗口、按鈕、進度條等),其中resource.h包含各種控件(按鈕、窗口、進度條等)的ID,知道MFC的人都知道邏輯部分是通過這些ID來調用資源的。這類資源移植要慎重,后面會重點說部分易錯點;最后是XXXXDlg.cpp或XXXXDlg.h部分,這是主要邏輯部分,包括.h中的變量和成員函數聲明,.cpp中的on_XXX消息響應函數和自定義成員函數,這類移植也要慎重。

 

 

3、移植過程

先下載一個我的綠色牛逼私藏的VC6.0企業版:http://pan.baidu.com/s/1mgIAGi8

之后新建一個同名MFC對話框工程,注意類名和dlg名也要一樣!

 

 

接着直接把com相關文件加入工程;resource.h中間ID的宏定義可以直接替換*.rc文件可以對比着替換;Dlg.h也是對比着替換,比較容易看出來該增加哪些;Dlg.cpp中自己添加的成員函數可以直接copy進去,對於MFC自動生成的部分,要對比着替換(也比較容易觀察),特別的在Dlg.cpp中的MESSAGE_MAP要注意並不是直接copy的,要通過類向導來添加!

 

 

 查看->建立類向導->以BUTTON1為例:對照原來DLg.cpp文件中MAP中ON_BN_CLICKED(....)的設置為目標工程的控件綁定消息。當一個消息綁定好之后,IDE會自動增加一個上面灰色的一行,並在同一文件的下面某個地方生成該msg的響應函數OnBuClickedButton1LinkCom,這時你需要把原工程中響應的代碼段放到對應響應函數中。

 

 

最后,再簡單地排一下錯,基本上像上面小的MFC工程移植一下和我寫這篇博客花費的事件差不多。遠遠小於你下載個高版本的VS然后再安裝運行來得快,謝謝~

 

 

@beautifulzzzz 2015-12-30 continue~ 

 


免責聲明!

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



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