[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~ 

时间: 2024-08-07 00:15:33

[MFC] VS2013版本MFC工程移植到VC6.0上的相关文章

vc6.0 PK vs2010

从VC++6.0不足看VisualC++2010新特性 说起VC,有人想到维生素C(维C),有人想到风险投资(venture capital), 程序员们尤其是做底层开发的程序员或老程序员们第一感觉肯定会想到Visual C++6.0.为什么是6.0而不是其它的版本?这里的原因就不用我再多讲了,因为太经典了!这个经典已经有了10年的光荣历史,微软的Visual Studio系列也已经发展到了Visual Studio 2010.漫长的辉煌中Visual C++6.0也暴露出了一些问题,在这篇文章

VC6.0编译DLL,使用VS2010调用问题及解决方法

1.做驱动的时候,做应用程序需要和驱动通信,必须建立一个DLL. 2.因为客户使用版本太低,需要使用到VC6.0编写DLL 3.在VC6.0上编写DLL的时候,导出的函数名会出现和原函数名不对,导致调用失败 4.解决办法, 找到VC6.0工程下面的文件   ***.DEF. 把里面的   LIBRARY  后面输入要导出的DLL的文件名.如: LIBRARY      "pc104dll" 在EXPORTS后面输入要导出的函数名,整个文件内容入下: LIBRARY      "

sylixos标准工程移植到Lite版本

1. 概述     针对低端处理器(如ARM M系列处理器)的开发工作,翼辉信息推出了SylixOS Lite工程版本.SylixOS Lite版本工程属于SylixOS轻量级工程,与标准的SylixOS工程相比裁剪掉部分功能(如GDB调试.虚拟内存管理.动态装载.部分网络功能等).    由于SylixOS Lite版本不支持动态装载,本文档介绍基于SylixOS标准开发环境下的中间件移植到SylixOS Lite版本的方法,如在标准版本下开发内核模块工程.动态库工程移植到Lite版本的方法.

VC6.0 编译生成Release或Debug版本

可以project->Set Active Config,选中release版本.此后,按F5或F7编译所得的结果就是release版本. -------------------------------------------------------- -------------------------------------------------------- vc6.0在设置选了win32 release,但是点了确定再打开设置,为什么又变成Win32 Debug了? 工程设置对话框中显示

[OpenGL] 2、企业版VC6.0自带的Win32-OpenGL工程浅析

一. 建立工程 O(∩_∩)O~上一节介绍了一种非常容易的OpenGL的搭建方法,这一节将就上一节介绍的VC6.0企业版自带的OpenGL Win32 Application建立一个模板工程,并分析这个模板工程,便于今后我们在此基础上进行修改~ PS: 如果有报错,请仔细读上一节的介绍哦~好像Win8不行的! 二. 框架逻辑分析 O(∩_∩)O~工程建好之后主要的就是上图中用红框框起来的文件   2-1. OpenGL1.cpp分析 其中OpenGL1.cpp就是Win32应用程序的主逻辑框架啦

vc6.0项目到vc2013移植记录

先来个总结,VC6.0单向升级到vc2005以后版本,并不能完全兼容,主要分为以下五种情况: ①最常见的字符串格式问题 ②消息响应函数原型发生了改变 ③附带着的VC6.0编译来的DLL也要移植到vs2013下进行重新编译,方可正常链接. ④如果是商业项目(现在我移植的这个就是),一般还会有hlp文档,会提示缺少hcw.exe文件 下面是解决方案: 一.CString->char *转换: CString m_Head: char *codefile; codefile=(LPSTR)(LPCTS

ubuntu12.10 cocos2dx 2.2.1 工程移植到安卓

1.到项目文件的proj.android目录下,编辑build_native.sh文件,指定NDK和cocos2dx路径 export NDK_ROOT=/home/liyuchen/dev/android-ndk-r9d export NDK_MODULE_PATH=/home/liyuchen/dev/cocos2d-x-2.2.1/cocos2dx 2.执行脚本 ./build_native.sh 此处报错多与ndk版本有关 3.在eclipse中(已经配置好android sdk和ndk

Win7 VC6.0 打开多个工程设置

环境: Win7 VC 6.0 VS2008 VS2013 在Win7操作系统下,如果是以Administrator登陆,则VC6.0打开工程文件的时候,默认使用VS2013强转工程, 并且使用VC 6.0拖拽打开不能同时打开多个工程文件,后打开的工程会将前一个工程close掉,这样,VC6.0只能出现一个进程. 在xp下,我们可以设置文件打开的默认方式中去掉DDE选项,这样可以使得VC6可以同时打开多个工程,但在win7下,却没有办法找到这个设置窗口.经过实践,可以用以下办法解决: 打开cmd

C++MFC编程笔记day06 MFC向导、MFC绘图类使用

MFC绘图 MFC绘图类包括绘图设备类和绘图对象类 1 绘图设备类 CDC类-父类是CObject,封装的是一般的绘图设备,例如:显示器, 打印机等. CWindowDC类-父类是CDC类,封装的是窗口对象,包括客户区和非 客户区. CClientDC类-父类是CDC类,封装的仍然是窗口,但是只包括客户区. CPaintDC类-父类是CDC类,封装的是窗口的客户区.但是,它只用 在窗口的WM_PAINT消息处理函数中. CMetaFileDC类-父类是CDC类,作用保存绘制命令. 2 使用 创建