[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~
[MFC] VS2013版本MFC工程移植到VC6.0上的更多相关文章
- VC6.0 工程转到VS2010一些问题的描述及解决方法
下列为VC6.0 工程转到VS2008一些问题的描述及解决方法 //////////////////////////////////////////////////////////////////// ...
- vc6.0 PK vs2010
从VC++6.0不足看VisualC++2010新特性 说起VC,有人想到维生素C(维C),有人想到风险投资(venture capital), 程序员们尤其是做底层开发的程序员或老程序员们第一感觉肯 ...
- vc6.0连接mysql数据库
一.MySQL的安装 Mysql的安装去官网下载就可以...最新的是5.7版本.. 二.VC6.0的设置 (1)打开VC6.中选0 工具栏Tools菜单下的Options选项,在Directories ...
- 还在使用vc6.0吗??vs2010吧
每个人在面对新的事物的时候,总是充满了排斥感,当vista和win7来临的时候,我们还在留恋xp,说xp是如何的好,win7是如何的不给力,当然,我们必须承认,xp是一款优秀的操作系统,这个我们无法否 ...
- VC6.0编译DLL,使用VS2010调用问题及解决方法
1.做驱动的时候.做应用程序须要和驱动通信,必须建立一个DLL. 2.由于客户使用版本号太低,须要使用到VC6.0编写DLL 3.在VC6.0上编写DLL的时候,导出的函数名会出现和原函数名不正确,导 ...
- VC6.0中MFC界面换肤简例
利用VC中的MFC进行界面设计时,发现界面上的各控件无法简易地进行调整,比如字体大小.颜色.格式等. 为了改变外观,小小地美化一下,今天决定动手一试. 网上提供的库和方法不计其数,我选择了SkinMa ...
- MFC多语言程序版本,在不同的windows系统上的使用
如何使MFC程序界面支持多国语言?这次使用后给自己做一个总结. 我们使用vc6.0的版本来试验 1. 切换到资源视图,右键Dialog->Insert Copy 2. ok后,会出来一个语言的选 ...
- MFC多语言程序版本,在不同的windows系统上的使用 FP_SetThreadUILanguage
from: http://www.cnblogs.com/qijicxl/p/3840157.html 如何使MFC程序界面支持多国语言?这次使用后给自己做一个总结. 我们使用vc6.0的版本来试验 ...
- 在MFC中使用GDI+的一般方法,以VC6.0编译器为例
1.载解压GDI+开发包: 2.正确设置include & lib 目录: 设置如下:VC6.0编译器菜单Tools->Options->Directories中添加inlude ...
随机推荐
- win10+vs2015+opencv3.0 x86/x64配置(debug+release)
最近做一些图像识别的项目,用到了opencv,opencv3.1没有x86版本,所以只能用opencv3.0来完成,下面介绍一下在window10下vs2015 配置opencv3.0的过程(x86和 ...
- mouseover、mouseout,mouseenter、mouseleave区别
心情压抑的一天,我想好好的. mouseover与mouseenter 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. 只有在鼠标指针穿过被选元素时,才会触发 mouseen ...
- The Singleton pattern
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的结构 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一 ...
- Java 第17章 继承
继承的概念 继承机制是面向对象程序设计不可缺少的关键概念,是实现软件可重用的根基, 是提高软件系统的可扩展性与可维护性的主要途径. 所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类 ...
- Redis多机常用架构-主从
本文内容摘录自同事Perry Zhang的讲解,如需转载须本人同意. 1.主从 命令:slaveof <IP><PORT> redis主从配置:redis支持master-sl ...
- Mini projects #8–RiceRocks
课程全名:An Introduction to Interactive Programming in Python,来自 Rice University 授课教授:Joe Warren, Scott ...
- LIS最长上升子序列O(n^2)与O(nlogn)的算法
动态规划 最长上升子序列问题(LIS).给定n个整数,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列可以理解为:删除0个或多个数,其他数的顺序不变).例如序列1, 6, 2, 3, 7, ...
- hdu 2896 AC自动机
// hdu 2896 AC自动机 // // 题目大意: // // 给你n个短串,然后给你q串长字符串,要求每个长字符串中 // 是否出现短串,出现的短串各是什么 // // 解题思路: // / ...
- int 和 string 相互转换(简洁版)
string int2str(int x) { return x ? num2str(x/10)+string(1,x%10+'0') : "";} int str2int(str ...
- [转]Liunx上安装svn客户端
[转]Liunx上安装svn客户端 虽然说很简单的用yum install subversion就可以将svn安装到系统中,但是yum库中的版本实在是有点低——1.4.2.因此我选择以源码方式安装.安 ...