Visual C++.net与Visual C++6.0使用之差别

** Visual C++.net ** ** 与 ** ** Visual C++6.0 ** ** 使用之差别 ** ** **

2002 年 2 月 13 日,微软公司发布了具有历史意义的 Microsoft Visual Studio.net, 这给全世界的软件开发人员打了一针强心剂,一个历史上最为强大的开发工具诞生了!但是人们在高兴的同时,也产生了一些小麻烦,因为微软新的产品与以前的版本在使用上有所不同,有些地方甚至还有很大的差异,我也是一个使用微软开发工具的软件开发人员,下面就我个人的体验来为大家解一些疑排一些惑,有些还不够全面。

我以 Microsoft Visual C++.net 为例,来说一说我发现的与 Microsoft Visual C++6.0 的不同之处。

下面给你一个 Microsoft Visual C++.net 的工作空间( workspace )的总体印象 , 见下图(这也是我最喜欢的自定义形式,我用的是 Windows2000Server+Microsoft

Visual Studio.net Enterprise Archtect Edition )

明显可以看出与 6.0 的不同之处,从第一感受来说是更漂亮了,我相信大多数人都会同意我的看法的,对吧 ^_^….

但我们要看到实质的变化,就要对比一下这两个版本。我们以一个 SDI 应用程序 Test 为例,来看一看他们的区别,好吧正式开始!

(1) 首先看看目录文件架构的不同:( vc.net 的默认安装目录为 :…\ 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, 下面是 Test 项目中 stdafx.h 文件的源代码:

// stdafx.h : 标准系统包含文件的包含文件,

// 或是经常使用但不常更改的

// 项目特定的包含文件

#pragma once

#ifndef VC_EXTRALEAN

#define VC_EXTRALEAN // 从 Windows 标头中排除不常使用的资料

#endif

// 如果您必须使用下列所指定的平台之前的平台,则修改下面的定义。

// 有关不同平台的相应值的最新信息,请参考 MSDN。

#ifndef WINVER // 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。

#define WINVER 0x0400 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。

#endif

#ifndef _WIN32_WINNT // 允许使用 Windows NT 4 或更高版本的特定功能。

#define _WIN32_WINNT 0x0400 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。

#endif

#ifndef _WIN32_WINDOWS // 允许使用 Windows 98 或更高版本的特定功能。

#define _WIN32_WINDOWS 0x0410 //为 Windows Me 及更新版本改变为适当的值。

#endif

#ifndef _WIN32_IE // 允许使用 IE 4.0 或更高版本的特定功能。

#define _WIN32_IE 0x0400 //为 IE 5.0 及更新版本改变为适当的值。

#endif

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的

// 关闭 MFC 对某些常见但经常被安全忽略的警告消息的隐藏

#define _AFX_ALL_WARNINGS

#include

 1<afxwin.h> // MFC 核心和标准组件 
 2
 3#include  <afxext.h> // MFC 扩展 
 4
 5#include  <afxole.h> // MFC OLE 类 
 6
 7#include  <afxodlgs.h> // MFC OLE 对话框类 
 8
 9#include  <afxdisp.h> // MFC 自动化类 
10
11#include  <afxdtctl.h> // Internet Explorer 4 公共控件的 MFC 支持 
12
13#ifndef  _AFX_NO_AFXCMN_SUPPORT 
14
15#include  <afxcmn.h> // Windows 公共控件的 MFC 支持 
16
17#endif  // _AFX_NO_AFXCMN_SUPPORT 
18
19#include  <afxrich.h> // MFC Rich Edit 类 
20
21更不同的是  vc.net  每个头文件中的类似如下的东东: 
22
23#if !defined(AFX_STDAFX_H__69597228_DA85_4F3B_81F6_E4E0A168D780__INCLUDED_) 
24
25#define AFX_STDAFX_H__69597228_DA85_4F3B_81F6_E4E0A168D780__INCLUDED_ 
26
27不见了,真想不懂微软为什么不用  file guarder,  那它是如何防止同一个头文件被重复包含的,嗨? 
28
29(5)classwizard  的有无:当你第一次使用  vc.net  时,你会惊讶的发现  classwizard  不见了,你会大喊“微软你太过分了。”但是如果你继续发掘的话你会发现其实 
30
31classwizard  不见了又如何,微软提供的替代它的功能甚至超过了它,这些功能很分散,这里不便详述,还是你自己去发掘吧! 
32
33(6)  项目方案配置  .  项目工程的配置和项目目录设置: 
34
35vc.net  中的项目方案配置和项目工程的配置都可以在“解决方案资源管理器”(  solution explorer  )中完成:(以  Test  为例) 
36
37项目方案配置方法:单击“解决方案资源管理器”中的“解决方案  Test  ”,然后 
38
39在右键菜单中选择“属性”即可配置。 
40
41项目工程的配置方法:单击“解决方案资源管理器”中的“  Test  ”,然后 
42
43在右键菜单中选择“属性”即可配置。 
44
45项目目录设置方法:选择  “工具”菜单  \------  “选项”,弹出“选项”对话框 
46
47在“项目”中即可配置。</afxrich.h></afxcmn.h></afxdtctl.h></afxdisp.h></afxodlgs.h></afxole.h></afxext.h></afxwin.h>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus