vs2008与vc 6.0对比

文章描述:-2022年3月28日发(作者:阳太阳)VC++6.0与VS2008开发对比 最近在看孙鑫的VC++教学视频,视频里是通过VC6.0进行教学的,而win7不兼容VC6.0,所以只能用VS2008了,毕竟6.0也是很多年前的IDE了。本来以为差不多的,就是IDE的版本不同而已,结果在边看边练习途中,发现了两者确实存在很多的不同之处,甚至VS2008与相对VC6.0退化的地方,不知道是微软不再专注MF

-

vs2008与vc 6.0对比2022年3月28日发(作者:阳太阳)


VC++6.0与VS2008开发对比
最近在看孙鑫的VC++教学视频,视频里是通过VC6.0进行教学的,而win7不兼容VC6.0,
所以只能用VS2008了,毕竟6.0也是很多年前的IDE了。本来以为差不多的,就是IDE的版
本不同而已,结果在边看边练习途中,发现了两者确实存在很多的不同之处,甚至VS2008
与相对VC6.0退化的地方,不知道是微软不再专注MFC而转向力捧.ET的原因,还是什么
我还没有玩转Visual Studio?下面先做些简单的总结吧,想到多少就先写着多少。
Unicode字符集导致不兼容
因为用Unicode字符的运行效率要高,所有VS2008中新建的项目默认是使用Unicode字符
的,因而很多地方如果按照VC6.0的写法的话编译就不能通过了。
比如按照默认的设置新建一个项目,写一个简单的弹出框,在VC6.0下面的写法是
C++
1 MessageBox(
而在VS2008中是无法通过的,需要用到_T(这个宏,即
C++
1 MessageBox(_T(
才可以。当然在写代码的过程也需要时时注意进行转换。还有的解决方法就是在新建的项目
的时候不要选Unicode库,如下图:

如果是编译现有的项目,也可以在右键“项目”->“属性”->“配置属性”->“常规”里面,
把“字符集”一栏改成的“使用多字节字符集”。



事件、消息响应和重载函数的添加
在VC6.0中,要添加事件、消息响应和重载函数可以用到类向导(Class Wizard),而在2008
中已经去掉了类向导这个东西,所以都添加事件都是通过对相应的类的属性进行设置的,比
如要在View类中添加事件、消息响应或者重载函数时,可以进入到类视图,右键点击View
类,然后是“属性”,此时可在属性面板看到

从闪电图标开始依次就是“事件”、“消息”和“重载函数”,里面的内容跟VC6.0里面的是
一样的。
给菜单和控件添加事件处理和类、变量等
VC6.0同样是通过类向导就可以解决,VS2008则是通过右键点击图形界面,选择“添加事件
处理程序”、“添加类”、“添加变量”即可。
给类添加函数和变量
VS2008中通过类视图,右键点击需要添加的类,然后的在“添加”一项中有“添加函数”
和“添加变量”两个选项。
消失的
调试ActiveX会用到,但是在VS2008中却没有到,其实它并没有去掉,而是
需要的我们自己去编译。比如我的VS2008安装在“C:Program Files”里面,那么在
则在“C:Program FilesMicrosoft Visual Studio
9.0Samples2052”里面,解压出来,到”C:Program FilesMicrosoft
Visual Studio 9.0Samples2052C++MFColeTstCon”,按顺序TCProps,TstCon编译之后(注意:
如果是win7或者vista系统,需要在“项目”->“属性”->“配置属性”->“链接器”->“清
单文件”里面的“启用用户账户控制(UAC)”设置为“否”才行.),并且在编译值钱Debug的
平台要改成Win32.编译完成后在该目录下便能到程序,然后把在运行ActiveX
程序时选择对应的的路径就可以调试了。


为ActiveX控件添加变量、方法、属性和事件
同时是VC6.0用类向导完成的东西,VS2008中需要切换到类视图,在该视图下可以看到有
一个“你的项目名+Lib”的库,然后点击加号展开,会有带有类似于钥匙的图标的两行,在
“_D+你项目名”行下右键可以看到添加一项,可以进行添加的变量、方法和属性。

至于添加事件,网上很多地方都有说VS2005以后都不能添加事件了,我尝试过“添加事件”
那一项,结果会提示“不到对应的事件接口”,原因未明。
为ActiveX自定义的属性关联变量
如果要将自定义的属性和一个变量关联,VC6.0中可以直接通过“Optional property name”
进行设置,而VS2008中添加变量时却没有这一项可填,只能通过自己添加代码进行关联。
在PropPage类中的DoDataExchange方法里面,添加以下代码
C++
1 DDP_Text(pDX, IDC_EDIT_ITERVAL, m_updateInterval, _T(
其中IDC_EDIT_ITERVAL为控件名称,m_updateInterval为变量名,Interval则是外部名称,
并且要把DDP_PostProcessing(pDX);一句放到最后,修改后的结果是
C++
1 DDP_Text(pDX, IDC_EDIT_ITERVAL, m_updateInterval, _T(
2 DDX_Text(pDX, IDC_EDIT_ITERVAL, m_updateInterval);
3 DDP_PostProcessing(pDX);
添加模块定义文件
在VC6.0下需要到项目的目录下新建一个.def的文件,然后再在项目里面添加,而VS2008
可以直接在解决方案视图右键,“添加”->“新建项”里面就可以到模块定义文件,同时
建议VS2008还是直接在解决方案里面添加,因为在模块定义文件里面声明库的时候,库名
需要用引号包住才可以编译出一个可用的dll,而VC6.0是不需要也可以的,这也是我刚开
始弄的时候一直调用不成功的原因,结果用dumpbin查了才发现编译出来的dll有问题。如


果是直接在VS2008中添加的话,它会默认帮你声明了库,还是比较方便的。
模块定义节的属性
VC6.0是通过def文件中“SEGMETS”来定义dll里面指定节的属性,而VS2008用“SEGMETS”
的话编译会导致“fatal error LK1118”的错误,解决方法是“SECTIOS”来代替即可。


VC++6.0与VS2008开发对比
最近在看孙鑫的VC++教学视频,视频里是通过VC6.0进行教学的,而win7不兼容VC6.0,
所以只能用VS2008了,毕竟6.0也是很多年前的IDE了。本来以为差不多的,就是IDE的版
本不同而已,结果在边看边练习途中,发现了两者确实存在很多的不同之处,甚至VS2008
与相对VC6.0退化的地方,不知道是微软不再专注MFC而转向力捧.ET的原因,还是什么
我还没有玩转Visual Studio?下面先做些简单的总结吧,想到多少就先写着多少。
Unicode字符集导致不兼容
因为用Unicode字符的运行效率要高,所有VS2008中新建的项目默认是使用Unicode字符
的,因而很多地方如果按照VC6.0的写法的话编译就不能通过了。
比如按照默认的设置新建一个项目,写一个简单的弹出框,在VC6.0下面的写法是
C++
1 MessageBox(
而在VS2008中是无法通过的,需要用到_T(这个宏,即
C++
1 MessageBox(_T(
才可以。当然在写代码的过程也需要时时注意进行转换。还有的解决方法就是在新建的项目
的时候不要选Unicode库,如下图:

如果是编译现有的项目,也可以在右键“项目”->“属性”->“配置属性”->“常规”里面,
把“字符集”一栏改成的“使用多字节字符集”。



事件、消息响应和重载函数的添加
在VC6.0中,要添加事件、消息响应和重载函数可以用到类向导(Class Wizard),而在2008
中已经去掉了类向导这个东西,所以都添加事件都是通过对相应的类的属性进行设置的,比
如要在View类中添加事件、消息响应或者重载函数时,可以进入到类视图,右键点击View
类,然后是“属性”,此时可在属性面板看到

从闪电图标开始依次就是“事件”、“消息”和“重载函数”,里面的内容跟VC6.0里面的是
一样的。
给菜单和控件添加事件处理和类、变量等
VC6.0同样是通过类向导就可以解决,VS2008则是通过右键点击图形界面,选择“添加事件
处理程序”、“添加类”、“添加变量”即可。
给类添加函数和变量
VS2008中通过类视图,右键点击需要添加的类,然后的在“添加”一项中有“添加函数”
和“添加变量”两个选项。
消失的
调试ActiveX会用到,但是在VS2008中却没有到,其实它并没有去掉,而是
需要的我们自己去编译。比如我的VS2008安装在“C:Program Files”里面,那么在
则在“C:Program FilesMicrosoft Visual Studio
9.0Samples2052”里面,解压出来,到”C:Program FilesMicrosoft
Visual Studio 9.0Samples2052C++MFColeTstCon”,按顺序TCProps,TstCon编译之后(注意:
如果是win7或者vista系统,需要在“项目”->“属性”->“配置属性”->“链接器”->“清
单文件”里面的“启用用户账户控制(UAC)”设置为“否”才行.),并且在编译值钱Debug的
平台要改成Win32.编译完成后在该目录下便能到程序,然后把在运行ActiveX
程序时选择对应的的路径就可以调试了。


为ActiveX控件添加变量、方法、属性和事件
同时是VC6.0用类向导完成的东西,VS2008中需要切换到类视图,在该视图下可以看到有
一个“你的项目名+Lib”的库,然后点击加号展开,会有带有类似于钥匙的图标的两行,在
“_D+你项目名”行下右键可以看到添加一项,可以进行添加的变量、方法和属性。

至于添加事件,网上很多地方都有说VS2005以后都不能添加事件了,我尝试过“添加事件”
那一项,结果会提示“不到对应的事件接口”,原因未明。
为ActiveX自定义的属性关联变量
如果要将自定义的属性和一个变量关联,VC6.0中可以直接通过“Optional property name”
进行设置,而VS2008中添加变量时却没有这一项可填,只能通过自己添加代码进行关联。
在PropPage类中的DoDataExchange方法里面,添加以下代码
C++
1 DDP_Text(pDX, IDC_EDIT_ITERVAL, m_updateInterval, _T(
其中IDC_EDIT_ITERVAL为控件名称,m_updateInterval为变量名,Interval则是外部名称,
并且要把DDP_PostProcessing(pDX);一句放到最后,修改后的结果是
C++
1 DDP_Text(pDX, IDC_EDIT_ITERVAL, m_updateInterval, _T(
2 DDX_Text(pDX, IDC_EDIT_ITERVAL, m_updateInterval);
3 DDP_PostProcessing(pDX);
添加模块定义文件
在VC6.0下需要到项目的目录下新建一个.def的文件,然后再在项目里面添加,而VS2008
可以直接在解决方案视图右键,“添加”->“新建项”里面就可以到模块定义文件,同时
建议VS2008还是直接在解决方案里面添加,因为在模块定义文件里面声明库的时候,库名
需要用引号包住才可以编译出一个可用的dll,而VC6.0是不需要也可以的,这也是我刚开
始弄的时候一直调用不成功的原因,结果用dumpbin查了才发现编译出来的dll有问题。如


果是直接在VS2008中添加的话,它会默认帮你声明了库,还是比较方便的。
模块定义节的属性
VC6.0是通过def文件中“SEGMETS”来定义dll里面指定节的属性,而VS2008用“SEGMETS”
的话编译会导致“fatal error LK1118”的错误,解决方法是“SECTIOS”来代替即可。

-

vs2008与vc 6.0对比

发布时间:2022-03-28 12:34:24
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 17 条评论,913人围观)