vs.net环境下的C++编程

一、概述
Visual C++6.0只支持ISO-C++,因为那时还没有.net平台 
Visual C++2005支持ISO-C++,同时还支持C++/CLI(Common Language Infrastructure通用语言框架),是在托管平台上的C++, 
ISO-C++会被编译成本地代码,而C++/CLI会被编译成托管代码. 
Visual C++2005中的ISO-C++支持标准更好一点,代码的可移植性比较好.如果使用纯C++语言来开发的话,你可以使用Visual C++2005中的ISO-C++.因为VC++2005包含了VC++6.0,只有函数库有一点更改,还有一些文件结构改了.




二、vc++.net环境和VC6.0具体的区别
(1) 首先看看目录文件架构的不同:(vc.net2003的默认安装目录为:…\ Microsoft Visual Studio .NET;而vc6.0默认安装目录为:…\Microsoft Visual Studio) 
vc.net目录下的文件目录数比vc6.0的要多出一些,但主要的目录也大体上相同。只是原来的common变为了common7,vc98变为了vc7;我们主要看一下vc7和vc98下的文件有什么不同;vc.net的前几个文件目录(包括:bin,include,lib,crt,atlmfc)与vc6.0基本相同,不同的是vc.net将atl和mfc合并为一个目录atlmfc,原来的mfc源代码可以在atlmfc\src\mfc中找到。而vc7中的其他新增的文件目录则估计是微软细分功能的产物。我们暂不去考虑。 
(2)在起始页可以配置应用程序使用环境:由于vs.net集成了vc++,vb,vc#等多种开发工具而且提供了多种配置方案,对于vc开发人员,推荐使用“vc++开发人员”配置。 
(3)MFC应用程序向导差异:当分别在vc.net 和vc6.0用MFC应用程序向导创建新工程Test时,你就会发现MFC应用程序向导在两个版本中稍有不同。首先在向导的样式上,vc.net使用的是嵌入浏览器模式而vc6.0使用的是对话框模式,而且vc.net在应用程序类型选项中提供了“多顶级文档”的方案和更加明显的“用户界面功能”选项。 
(4) 应用程序向导产生的各种文件的差异:下面列出两个版本中的功能对应的文件
vc.net vc6.0 
xx.sln(visual studio solution ) xx.dsw(developer studio workspace) 
xx.vcpj(visual studio project) xx.dsp(developer studio project) 
其他文件基本相同,但vc.net中已经不存在xx.clw(class wizard)文件了,但多了一个xx.aps文件和一个xx.manifest文件(在res文件夹中)。 
(5)stdafx.h文件的不同:在vc.net生成的文件中stdafx.h文件变化最大,众所周知stdafx.h以及stdafx.cpp是为了产生预编译块xx.pch。 
更不同的是vc.net每个头文件中的类似如下的东东: 
#if !defined(AFX_STDAFX_H__69597228_DA85_4F3B_81F6_E4E0A168D780__INCLUDED_) 
#define AFX_STDAFX_H__69597228_DA85_4F3B_81F6_E4E0A168D780__INCLUDED_ 
不见了,但是微软不用file guarder,也可以防止同一个头文件被重复包含。
(5)classwizard的有无:classwizard的功能主要交给Class View和Properties了。为控件添加变量可以直接右键。添加消息可以使用属性栏最上方闪电的按钮和它旁边的按钮。
(6)项目方案配置. 项目工程的配置和项目目录设置: 
vc.net中的项目方案配置和项目工程的配置都可以在“解决方案资源管理器”(solution explorer)中完成:(以Test为例) 
项目方案配置方法:单击“解决方案资源管理器”中的“解决方案Test”,然后在右键菜单中选择“属性”即可配置。 
项目工程的配置方法:单击“解决方案资源管理器”中的“Test”,然后在右键菜单中选择“属性”即可配置。 
项目目录设置方法:选择 “工具”菜单------“选项”,弹出“选项”对话框在“项目”中即可配置。
(7)vs.net平台没有<iostream.h>等头文件,只有<iostream>等头文件。也就是放弃了许多ANSI C标准的头文件。
(8)vs.net平台不需要使用F1来调用MSDN,把光标停留在要查询的函数上,就可以直接使用动态帮助窗口来选择最适合的帮助内容。第一次使用时需要配置vs.net的"组合帮助集合管理器",从中选择需要关联的帮助文件。
(9)vs.net平台的工程不可以转化或导出成vc6.0的工程。只能自己进行源代码级别的复制和粘贴,有些内容还需要修改。




三、Visual C++ 2005编程平台 
1)开发种类 
VC主要可以开发下列四类程序: 
Win32:直接使用Win32 API来开发C/C++语言的Windows程序或控制台应用程序 
MFC:使用MFC类库来开发C++语言的Windows程序 
ATL:使用ATL(Active Template Library活动模板库)来为因特网开发ActiveX控件
CLR:使用C++/CLI(Common Language Infrastructure公共语言基础结构/设施)开发基于.NET框架类库的CLR(Common Language Runtime公共语言运行库)程序。(在vs.net2003中是.NET类型程序)
2)解决方案与项目 
VC开发环境把应用程序放在解决方案(sulotion)中管理(解决方案对应于文件*.sln),一个解决方案中可以有多个项目(project)(项目对应于文件*.vcproj),每个项目对应于一个应用程序(Application)、动态链接库(DLL)、或COM组件(如ActiveX控件)。可通过双击sln文件或vcproj文件来启动VS/VC并装入对应的解决方案和项目。 
3)VS窗口的组成 
VS/VC开发平台的主窗口由如下几个部分组成: 
标题条(顶):显示当前开发的应用程序名,形为:应用程序名 — Microsoft Visual Studio 
菜单栏(上):包含文件、视图、项目、生成、调试、工具、测试、窗口、社区、帮助等菜单,可完成VS/VC的所有功能 
工具条(上):包含若干图形按钮和下拉式列表框,对应于某些常用的菜单项或命令的功能,简单形象,可方便用户操作。 
项目工作区(中左):包含解决方案资源管理器、类视图、属性管理器、资源视图等多个页面,用于组织和选择项目、文件、类和资源,配置项目属性等。 
编辑区(中右):用于程序的源代码和资源的编辑,含起始页 
工具区(右边):包含工具箱、服务器资源管理器等可以滑出的隐藏页面 
输出区(下):包含输出、代码定义窗口和调用浏览器等页面,用于显示操作的结果和出错信息、相关定义和帮助信息等 
状态条(底):显示当前操作或所选菜单/图标的提示信息 
注意:在第一次启动VS时,可以选择一种开发环境的种类,常用的是“Visual C++开发设置”和“常规开发设置”。也可以在以后的开发过程中,通过选择“工具\导入和导出设置”菜单项,打开“导入和导出设置向导”对话框,重新设置开发环境的种类。 
上面描述的是“Visual C++开发设置”的缺省环境。环境可以通过手工拖动、钉住等操作,或选择“视图”菜单中的各种菜单项来进行修改和调整。 
4)命令操作方法 
与其他应用程序一样,在VS/VC中,同样的操作可以用三种不同的方法来完成: 
选菜单项:功能全、层次多、操作慢,如“调试\启动调试” 
按工具条上的图标按钮:形象、较快、功能不全,如三角形那个 
按快捷健:快、开始时难记、功能不太全,如F5 
有工具条按钮的菜单项的左边有对应的按钮图标;有快捷健的菜单项的右边写有快捷(组合)健。 




四、C++/CLI的特性与语法
在vs.net2005中,那些在托管扩展中用到的关键字已经不是加下划线的关键字了,而是上下文敏感的关键字,这些关键字只有在特定的上下文中,才是关键字,或者只在使用联合其他关键字时才是关键字。
在通用类型系统(CTS)中,每一个基本类型都在System命名空间中存在一个对应的类。
在C++/CLI中引入了句柄的概念,按照CLI的规定,句柄代表一个托管对象的引用,使用^符号来声明。它与指针的区别是:句柄是针对托管堆上对象的托管引用,而指针仅仅指向内存中的一个地址;句柄在内存紧张时可能会指向不同的内存位置,而指针则不会改变自己所执行的位置;句柄是类型安全性的,必须指向一个具体的数据类型,而指针可以强制改变成任意类型,包括void*;句柄无需程序员“显式”删除,而指针则必须由程序员管理来防止内存泄漏等问题。
在vs.net环境中,安全问题得到重视,很多库已经被重写来提供一些可供替换的、更安全的版本。而且,编译器支持并默认打开了缓冲区安全检查的选项,使得它所编译的软件产品更加安全。




五、编程实践
1.采用多页面的方式组织,包括向导,和帮助等也采用页面方式。可以通过标题快速切换各个页面,十分方便。
2.控制台程序使用_tmain代替main作为主函数,是一种宽字符的兼容版本。由于vs.net2005中开发的程序默认定义了Unicode宏定义,所以一般要使用宽字符串wchar_t和L"str"。
3.订制程度很高,包括布局和一些类似Ctrl+F5后是否提示工程文件已过期都可以订制。
4.全面转向标准C++,没有iostream.h头文件,需要使用<iostream>和using namespace std;对于文件操作也同理。在C++中也可以同时引用多个命名空间。
5.在vs.net2005中选择C++布局,开发界面和VC6.0几乎没有差别;
6.MFC中没有了ClassWizard。在控件的右键菜单中可以添加变量和事件等。再编辑变量时需要在类视图中对该变量点右键选择属性进行修改。为空间添加事件和修改事件时选择属性视图中最上面一排的“控件事件”按钮,即闪电图标。如果选择了对话框等还会在闪电按钮后面位置上出现“消息”按钮,可以使用同样的方法在这里添加消息和修改消息。







已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页