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

类别:.NET开发 点击:0 评论:0 推荐:

Visual C++.netVisual C++6.0使用之差别

   2002213日,微软公司发布了具有历史意义的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变为了common7vc98变为了vc7;我们主要看一下

vc7vc98下的文件有什么不同;vc.net的前几个文件目录(包括:bin,include,lib,crt,atlmfc)与vc6.0基本相同,不同的是vc.netatlmfc合并为一个目录atlmfc,原来的mfc源代码可以在atlmfc\src\mfc中找到。

vc7中的其他新增的文件目录则估计是微软细分功能的产物。我们暂不去考虑。

(2)配置应用程序使用环境:由于vs.net集成了vc++,vb,vc#等多种开发工具而且提供了多种配置方案,对于vc开发人员,推荐使用“vc++开发人员”配置。

(3)MFC应用程序向导差异:当分别在vc.net vc6.0MFC应用程序向导创建新工程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 <afxwin.h>         // MFC 核心和标准组件

#include <afxext.h>         // MFC 扩展

#include <afxole.h>         // MFC OLE 类

#include <afxodlgs.h>       // MFC OLE 对话框类

#include <afxdisp.h>        // MFC 自动化类

 

#include <afxdtctl.h>       // Internet Explorer 4 公共控件的 MFC 支持

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include <afxcmn.h>              // Windows 公共控件的 MFC 支持

#endif // _AFX_NO_AFXCMN_SUPPORT

 

#include <afxrich.h>        // MFC Rich Edit 类

更不同的是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的有无:当你第一次使用vc.net时,你会惊讶的发现classwizard不见了,你会大喊“微软你太过分了。”但是如果你继续发掘的话你会发现其实

classwizard不见了又如何,微软提供的替代它的功能甚至超过了它,这些功能很分散,这里不便详述,还是你自己去发掘吧!

(6)项目方案配置. 项目工程的配置和项目目录设置:

  vc.net中的项目方案配置和项目工程的配置都可以在“解决方案资源管理器”(solution explorer)中完成:(以Test为例)

 项目方案配置方法:单击“解决方案资源管理器”中的“解决方案Test”,然后

在右键菜单中选择“属性”即可配置。

  项目工程的配置方法:单击“解决方案资源管理器”中的“Test”,然后

在右键菜单中选择“属性”即可配置。

  项目目录设置方法:选择 “工具”菜单------“选项”,弹出“选项”对话框

在“项目”中即可配置。

 

 

本文地址:http://com.8s8s.com/it/it45987.htm