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也暴露出了一些问题,在这篇文章中我们将从Visual C++6.0的问题和Visual C++2010的新特性两个方面向大家介绍,也可以说是Visual C++2010 PK Visual C++6.0。
VC++ 6.0的问题
VC++ 6.0是Visual Studio6.0中的一种重要编程语言,也是中国C++开发人员使用最多的开发工具之一。 Visual C++是构建Windows平台下应用程序功能最强大而又最复杂的工具,是目前世界上使用最多的开发工具之一,应用极度广泛,从桌面应用程序到服务器程序,从系统软件到应用软件,图形图像,语音技术,设备驱动,网络安全,加密解密等等几乎无处不在。主流的3 种操作系统Windows,Linux,Unix内核都是用C语言和汇编语言写的,而上层的高级特性都是用C++编写。
直到今天,Visual C++6.0仍然占据着C++开发工具的绝对优势的地位。自从微软从2000年开始推行.NET战略以来,其核心的编程语言是C#,从那个时候,C++的支持力度就开始不断的下滑,虽然Visual C++也有几次更新,但都不是很令人满意,更灵人焦虑的是,有些开发者开始怀疑Visual C++的前途。尽管Visual C++的一些快捷开发被其他开发语言所取代,由于C++可以与操作系统的天生的暧昧关系,能够与C语言无缝结合,所以Visual C++不可能被淘汰,尤其是对于底层开发。尽管Visual C++ 6.0很强大,是编程语言里一再受宠的幸运儿。但是Visual C++6.0已经成了昨日黄花,尤其让所有Visual C++6.0开发人员郁闷的是Visual C++6.0开发的界面还停留在早期的水平上,界面粗糙,操作复杂,比起现在华丽而又夺人眼目的界面设计,更是逊色不少。而且Visual C++6.0也不完全符合C++标准。
正是由于VisualC++6.0的界面设计还停留在Windows 98时期的水平,操作复杂,再加上它不是完全符合C++标准,在代码和BUG跟踪调试上异常复杂,这也提高了踏入VC++开发的门榄。但是随着Visual C++2010的推出,全面支持最新的C++标准、改善了IDE的效率,并且引入了很多新的特性,这些功能的增强,大大提高程序员们的开发效率,带来更高的代码生产力与开发的便捷。
Visual C++2010 新特性
Visual C++2010为所有的VC++开发人员做了贴心而又周全的考虑,下面我们从可视化设计、人性化使用、安全可靠、支持C++新标准和部署简洁等方面介绍Visual C++2010的新特性。详情请见:http://msdn.microsoft.com/zh-cn/library/dd831853.aspx
1. Ribbion界面设计可视化
在Visual C++6.0开发里面,界面简单丑陋是其中一个不爽的地方。尽管在Visual C++ 2008里面对Ribbion功能有所改善,但是仍不能进行可视化设计,Visual C++ 2010新增了Windows7的风格,同时最大的革新就是实现了可视化设计,很容易设计出漂亮的程序界面。下面我们体验一下Visual C++ 2010界面可视化设计的特性。具体操作步骤如下:
Ø 打开Microsoft Visual Studio 2010,点击“文件->新建->项目”,打开“新建项目”窗体
Ø 在“新建项目”窗体中,选择“Visual C++”节点中的“CLR”,然后在“模板”窗格中选择“Windows 窗体应用程序”。名称输入“WinFormDemo”。
Ø 随即打开Windows 窗体设计器,出现Form1 窗体
Ø 设置窗体属性,Text为WinFormDemo;添加一个Label,一个Button,一个DateTimePicker,具体如下:
控件类型 |
控件名称 |
Text属性 |
Label |
labMessage |
请选择日期 |
Button |
dtpSelected |
|
DateTimePicker |
btnExit |
退出 |
Ø 选中dtpSelected,为其添加ValueChanged事件,输入如下代码
Ø 双击btnExit,输入如下代码:
Ø 按“F5”运行
2. 更加人性化设计
Visual C++ 2010也对于开发人员做了很多人性化设计,以前的Visual C++版本,经常出现假死,例如头文件编辑,改变项目设置,配置项目的物理分布,新增控件等等,微软都做了很多调整。同时有了改进的错误智能感知支持,会在错误下方显示红色的波浪线,同时还提供了错误列表窗口,在窗口中双击列表中具体的项,自动定位到错误的位置,远远胜过了以前使用的Visual Assist。
在包含头文件时,也增加了自动完成和过滤功能。键入 #include时,集成开发环境将自动创建一个包含有效的头文件的下拉列表供您选择。如果你继续输入一个文件名,集成开发环境将自动根据您的输入加以过滤。在任何时候,你都可以根据这个列表来选择你想要包含的文件。因此,这一功能可以让程序员快速地包含那些尚不确切知道文件名的文件。
3. 重新启动管理器增强了稳健性和可靠性
Visual C++ 2010新增了重新启动管理器。重新启动管理器是Visual Studio for Windows Vista 的一项新增功能,增加了在应用程序意外关闭或重新启动的情况下对应用程序的支持。重新启动管理器的行为与应用程序的类型有关,如果是文档编辑器之类的应用程序,重新启动管理使应用程序器能够自动保存已经打开的文档的状态和内容,在程序异常的时候,能够保存运行时的数据,自动恢复到未发生异常时的情况,从而提高了程序的稳健性与可靠性。如果应用程序不是文档编辑器,则重新启动管理器将重新启动应用程序,但默认情况下无法保存应用程序的状态。
重新启动后,根据不同的应用程序,有任务对话框、Windows消息框等消息提示框,供用户选择是否还原到自动保存前的状态,如果用户选择不还原,重新启动管理器将丢弃临时保存的文件
向现有应用程序中添加对重新启动管理器支持的具体步骤是:
Ø 在 Visual Studio 中打开一个现有WinFormDemo应用程序。
Ø 打开主应用程序的源文件。默认情况下,此文件是与应用程序同名的 .cpp文件。例如,WinFormDemo的主应用程序源文件是WinFormDemo.cpp。
Ø 查找主应用程序的构造函数。例如,如果项目为MyProject,则构造函数为
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->CWinFormDemoApp::CWinFormDemoApp()
Ø 将以下代码行添加到构造函数。
Ø 确保应用程序的 [InitInstance] 方法调用其父级InitInstance方法:
CWinApp::InitInstance或CWinAppEx::InitInstance。InitInstance方法负责检查m_dwRestartManagerSupportFlags参数。
Ø 编译并运行应用程序
4. 完全支持C++0x新标准
Visual Studio 2010开始对C++新标准C++0x全面支持,不会再像Visual C++ 6.0一样,对C++标准支持不佳。引进了很多C++新特性,这些新特性带来C++性能与效率更大的提升。并且在项目升级上做了很大改进,以前Visual Studio2008, Visual Studio 2005升级VC6.0的时候,经常遇到C++语言新特性标准兼容性问题,Visual Studio 2010将兼容VC6.0,乃至Visual Studio2008,2005,2003开发的程序,进行代码转换与项目升级的时候自动更改编译器设置C++语言兼容,用以前的开发工具开发的程序在Visual Studio 2010都将不会再出现兼容性问题与故障。那些已经存在的非托管应用程序,通过一定的处理也同样能够具有Windows7所带来的特性。所有的老项目都能用Visual Studio 2010进行兼容性升级。
5. 更容易发布、部署
Visual Studio 2010改变了依赖于VisualC++库的应用程序的发布方式。依赖于Visual C++库的应用程序不再需要Fusion (WinSxS) Manifest,这意味着当我们将应用程序部署到一个本地文件夹时,将不再需要众多的小Manifest。另外,Visual C++ 2010也同样支持之前的各种部署机制,这些过去常用的方法在System32目录下安装Visual C++库。总之,Visual C++程序的发布与部署将更加简单。
首先,生成前面项目的Release文件,具体方法是选中解决方案,修改配置管理器中的配置为“Release”,然后“生成解决方案”即可。
然后,在前面创建的解决方案中,添加“安装和部署”项目
Ø 选择“文件->新建->项目”,打开“新建项目”窗体
Ø 选择“安装和部署->VisualStudio Installer->安装项目”,点击“确定”
Ø 选中“Setup1”,点击右键,选择“添加->项目输出”
Ø 在“添加项目输出组”中选择“主输出”,配置选择“ReleaseWin32”,如下图
Ø 点击“重新生成”,即可产生下列文件,将 Setup1.msi 和 setup.exe 复制到第二台计算机上,按照安装向导提示的步骤完成安装。
如果将应用程序部署到应用程序本地文件夹,只需生成Release文件,然后复制WinFormDemo和C 运行库(CRT) 库文件、mfc100u.dll 和msvcr100.dll 复制到WinFormDemo项目的Release 文件夹中就可以了。
VC6.0与VS2010区别
l 区别1:字符串的表达
voidCMy123Dlg::OnBnClickedButton1()
{
// MessageBox("你好");//以前VC6.0写法,现在用不了.老版本用的多字节字符集
// MessageBox(L"你好");//L是 unicode字符集,可移植性不好
// MessageBox(_T("你好"));//这3种方法一样
// MessageBox(TEXT("你好"));
// MessageBox(_TEXT("你好"));
}
在VS2010中用哪个比较好?_T(),至于说明介绍之类的资料,在网上有很多,所以没有复制过来
l 区别2:网络编程的移植性:
区别还是有一丁点.就是字符上面.只要用_T(x)即可首先不得不说明:现在相当大的程序,都是使用多字节,并不是一步就能改成兼容的Unicode库.在代码中是要花费大量精力去修改,本来一个小小的程序,说不定修改就占了一半的时间与精力.(会修改还好,不会修改,那真的是...)举一个函数strcpy_s,在2者版本中兼容性就有问题.具体在MSDN中查询strcpy_s
所以,以后的程序中以大众为版本,使用多字节版--------->以后不做提示.默认为多字节版,另外写的程序默认为静态链接库(考虑到程序移植问题)
l 区别3:在类视图中,VS2010删除一个函数不是右键-->删除就能删除的,而是在类向导中--->删除
l 区别6:同一条语句.在VS2010编译器中,C++不允许默认int类型存在.而在VC++6.0就可以存在.语句如下:
ShutDownProc(BYTE* DATE);//函数声明
CMyDlg::PutFileProc(BYTE *DATE)//函数使用
{
SetDlgItemText(IDC_WORK_START,(char*)DATE);
}
区别将持续更新中,敬请期待~~ ,另外,我们最常用文件头 iostream.h在 vc2010里面用不了2010只支持iostream + uisng namespace std
如何从VC++6.0向VS2010过渡
l 1)你的工程不是vc6.0的工程,如果要移植到vs2008/vs2010,直接用vs2008/vs2010用打开工程中.vcproj文件。如果遇到警告,或编译错误需要自行调试。
l 2)vc6.0中.dsw-->工作空间(类似vs2008/vs2010的解决方案),.dsp-->工程文件;
vs2008/vs2010中-->.sln工作空间, .vcproj-->工程文件;
小结
经典也有过去时,在本文中我们对VC++6.0不足做了阐述,同时对Visual C++ 2010的一些新特性做了介绍,并将这二者做了比较,不难看出,微软花大精力推出的Visual C++ 2010,在操作使用、安全方面等,更多的考虑了使用者的习惯,在类库(MFC)和向导工程上都做了重要更新,更大程度上提高了开发人员的效率,我们还等什么呢,拥抱Visual C++ 2010,完美编码吧
vc6.0 PK vs2010的更多相关文章
- VC6.0和VS2010转换时经常遇到的问题
这是最近总遇到的,等以后再遇到时慢慢添加进来 1.从1.1更新为2.1,编译“min”: 找不到标识符 解决方法:加上#include "minmax.h" 2.c:\docume ...
- VC6.0学习C语言入门SDK
度网盘链接 VC6.0 密码:t6bd VS2010 密码:3of2 C语言入门教程 在线视频地址(PS此链接摘抄至博主lellansin) Acfun.tv:http://www.acfun. ...
- vc6.0代码转vs2017相关问题
vc6.0代码转vs2017相关问题 命令行 error D8016: “/ZI”和“/Gy-”命令行选项不兼容fatal error C1083: 无法打开包括文件: “WinSock2.h”: N ...
- VS2010中 打开vc6.0的工程时,遇到的问题及解决办法
用VS2010打开vc6.0的工程时,遇到了很多的问题,下面记录下解决办法. 1. 报错: error C2065: “i”: 未声明的标识符 解决办法: 提出 i 的申明,因为 i 的申明可能在fo ...
- 还在使用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 工程转到VS2010一些问题的描述及解决方法
下列为VC6.0 工程转到VS2008一些问题的描述及解决方法 //////////////////////////////////////////////////////////////////// ...
- 在VC6.0中能不能使用Duilib界面库呢?
Duilib库的源代码是在vs2010下编译的,一般适用于vs2008及以上的版本开发使用,那么duilib能不能在vc6.0的工程中使用呢?如何在vc6.0中使用duilib库呢? 今天,由于工作要 ...
- MFC(1):vc6.0转vs2005出现的问题
在将vc6.0程序转换到vs2005或者vs2008.vs2010时提示:error C2440: 'static_cast' : cannot convert from 'UINT (__this ...
随机推荐
- PIE结对项目编程
一.题目描述 构造程序并测试,分别是: 1.不能触发Fault. 2.触发Fault,但是不能触发Error. 3.触发Error,但是不能产生Failure. 二.结对对象 ...
- js input监听兼容事件
$('#phoneNumber').on('input',function() { var valueP = $(this).attr('value'); if(valueP.length == 11 ...
- 第八章 高级搜索树 (xa4)红黑树:删除
- 将tomcat做成服务
①修改startup.bat 在第一行前加入如下内容: SETJAVA_HOME=D:\ProgramFiles\tool\Java\jdk1.6 SETCATALINA_HOME=D:\Progra ...
- 分割回文串 · Palindrome Partitioning
[抄题]: 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串. 返回s所有可能的回文串分割方案. 给出 s = "aab",返回 [ ["aa", & ...
- iOS 开发 需要的版本管理工具,UI图,bug管理工具等
1.版本管理工具 或直接 终端敲命令SVN(smartSvn 或者cornerstone/终端) 或git (sourceTree/终端) 2. 原型管理工具 使用墨刀(https://modao ...
- phpcms与discuz的ucenter整合
1.安装phpcms系统,域名为pc.me 2.安装discuz,并选择安上uc_server,域名为dz.me 3.在phpcms下phpsso的系统设置 4.到ucenter管理中心- ...
- SVN的标准目录结构:trunk、branches、tags
原文链接:http://techlife.blog.51cto.com/212583/223704/ 我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录 ...
- CocoStudio
不知道从哪里下载的CocoStudio_Full_V1.0.0.1.1185392965.exe 安装后点击"Animation Editor"."UI Editor&q ...
- vue的过滤器
Vue.Js 提供了强大的过滤器API,能够对数据进行各种过滤处理,返回需要的结果 vue的过滤器一般在JavaScript 表达式的尾部,由“|”符号指示: 过滤器可以让我们的代码更加优美,一般可以 ...