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

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

  1. VC6.0 工程转到VS2010一些问题的描述及解决方法

    下列为VC6.0 工程转到VS2008一些问题的描述及解决方法 //////////////////////////////////////////////////////////////////// ...

  2. vc6.0 PK vs2010

    从VC++6.0不足看VisualC++2010新特性 说起VC,有人想到维生素C(维C),有人想到风险投资(venture capital), 程序员们尤其是做底层开发的程序员或老程序员们第一感觉肯 ...

  3. vc6.0连接mysql数据库

    一.MySQL的安装 Mysql的安装去官网下载就可以...最新的是5.7版本.. 二.VC6.0的设置 (1)打开VC6.中选0 工具栏Tools菜单下的Options选项,在Directories ...

  4. 还在使用vc6.0吗??vs2010吧

    每个人在面对新的事物的时候,总是充满了排斥感,当vista和win7来临的时候,我们还在留恋xp,说xp是如何的好,win7是如何的不给力,当然,我们必须承认,xp是一款优秀的操作系统,这个我们无法否 ...

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

    1.做驱动的时候.做应用程序须要和驱动通信,必须建立一个DLL. 2.由于客户使用版本号太低,须要使用到VC6.0编写DLL 3.在VC6.0上编写DLL的时候,导出的函数名会出现和原函数名不正确,导 ...

  6. VC6.0中MFC界面换肤简例

    利用VC中的MFC进行界面设计时,发现界面上的各控件无法简易地进行调整,比如字体大小.颜色.格式等. 为了改变外观,小小地美化一下,今天决定动手一试. 网上提供的库和方法不计其数,我选择了SkinMa ...

  7. MFC多语言程序版本,在不同的windows系统上的使用

    如何使MFC程序界面支持多国语言?这次使用后给自己做一个总结. 我们使用vc6.0的版本来试验 1. 切换到资源视图,右键Dialog->Insert Copy 2. ok后,会出来一个语言的选 ...

  8. MFC多语言程序版本,在不同的windows系统上的使用 FP_SetThreadUILanguage

    from: http://www.cnblogs.com/qijicxl/p/3840157.html 如何使MFC程序界面支持多国语言?这次使用后给自己做一个总结. 我们使用vc6.0的版本来试验 ...

  9. 在MFC中使用GDI+的一般方法,以VC6.0编译器为例

    1.载解压GDI+开发包: 2.正确设置include & lib 目录: 设置如下:VC6.0编译器菜单Tools->Options->Directories中添加inlude ...

随机推荐

  1. 如何用Tacker将NFV带入OpenStack?

    最初社区里很多人争论过NFV是否属于OpenStack,而后来可以确定的是OpenStack的确占据了NFV会话中的很大一部分,并且形象地反映在了下面的ETSI MANO概念架构图中,OpenStac ...

  2. JSP知识

    五.JSP概述及最佳实践1.更改MyEclipse生成的JSP模板.模板文件与Servlet.java(Servlet模板文件)很近.2.学好JSP的关键:JSP就是Servlet.一定要记住JSP中 ...

  3. moss2003 sp3补丁安装

    安装完成以后自己在产品库里增加的存储过程不见了,自我保护?

  4. 【Mail】搭建邮件服务器(LAMP+Postfix+Dovcot+PostfixAdmin+Roundcubemail)

    大纲 一.mail部署说明 二.安装准备 三.LMAP环境配置 四.配置postfixadmin 五.配置postfix 六.配置dovecot 七.测试SMTP和POP3服务 八.配置Roundcu ...

  5. Runloop 深入理解(转)

    RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利 ...

  6. openoffice

    cmdcd/cd C:\Program Files (x86)\OpenOffice 4\program soffice -headless -accept="socket,host=127 ...

  7. linux下解压被分割的zip文件

    形如被分割的一系列文件:linux.z01, linux.z02, linux.z03, linux.zip 直接右键解压是不行的. 首先合并文件:cat linux.* > linux_all ...

  8. springboot使用之三:springboot使用logback日志

    springboot 默认使用的日志就是logback,所以使用logback不需要添加日志相关依赖了,执行 添加logback.xml配置文件,springboot这个聪明的框架便能识处理你的配置. ...

  9. Java学习笔记 06 数字格式化及数学运算

    一.数字格式化 DecimalFormat类 >>DecimalFormat是NumberFormat的子类,用于格式化十进制数,可以将一些数字格式化为整数.浮点数.百分数等.通过使用该类 ...

  10. 关于display: box 和 box-flex

    这两天做手机项目,使用到这个css3新属性.现在还不为所有浏览器支持,所以使用的时候要加上前缀.使用方法见下面: html代码: <div class="s-indLine" ...