Visual C++ 2008 中的新增功能

更新:2007 年 11 月

本主题介绍此 Visual Studio 2008 版本中的新增功能和更改。

Visual C++ 集成开发环境 (IDE)

定义

在 ATL、MFC 和 Win32 应用程序中创建的对话框现在符合 Windows Vista 样式指南。[Dialog boxes that are created in ATL, MFC, and Win32 applications now comply with the Windows Vista style guidelines.]

使用 Visual Studio 2008 创建新项目时,插入应用程序中的所有对话框将符合 Windows Vista 样式指南。如果重新编译使用早期版本的 Visual Studio 创建的项目,所有现有对话框将保持以前的外观。有关如何将对话框插入应用程序的更多信息,请参见对话框编辑器

ATL 项目向导现在具有一个用于为所有用户注册组件的选项。[The ATL Project wizard now has an option to register components for all users.]

从 Visual Studio 2008 开始,“ATL 项目”向导创建的 COM 组件和类型库在注册表的 HKEY_CURRENT_USER 节点中注册,除非选择了“为所有用户注册组件”。有关更多信息,请参见ATL 项目向导的应用程序设置

ATL 项目向导不再提供用于创建属性化 ATL 项目的选项。[The ATL Project wizard no longer provides an option to create attributed ATL projects.]

从 Visual Studio 2008 开始,ATL 项目向导就不再具有用于更改新项目属性化状态的选项。该向导创建的所有新 ATL 项目现在都未经属性化。

写入注册表可以重定向。[Writing to the registry can be redirected.]

随着 Windows Vista 的引入,写入注册表的特定区域要求程序在提升模式下运行。但不需要始终在提升模式下运行 Visual Studio。无需任何编程更改,每用户重定向可以自动将注册表写入从 HKEY_CLASSES_ROOT 重定向到 HKEY_CURRENT_USER。有关更多信息,请参见“链接器”属性页

类设计器现在为本机 C++ 代码提供有限支持。[The Class Designer now has limited support for native C++ code.]

在早期版本的 Visual Studio 中,类设计器仅用于 Visual C# 和 Visual Basic。C++ 用户现在可以使用类设计器,但只能在只读模式下使用。有关如何在 C++ 中使用类设计器的更多信息,请参见在类设计器中使用 Visual C++ 代码

Visual C++ 库

通用

定义

可将应用程序绑定到特定版本的 Visual C++ 库。[Applications can be bound to specific versions of the Visual C++ libraries.]

有时,应用程序依赖于对发布后的 Visual C++ 库所做的更新。在这种情况下,在具有早期版本库的计算机上运行应用程序可导致意外行为。现在可以将应用程序绑定到特定版本的库,以便该应用程序不会在具有早期版本库的计算机上运行。有关更多信息,请参见重新分发应用程序并将其绑定到特定库

STL/CLR 库

定义

Visual C++ 现在包括 STL/CLR 库。[Visual C++ now includes the STL/CLR Library.]

STL/CLR 库由标准模板库 (STL) 和标准 C++ 库的子集打包而成,与 C++ 和 .NET Framework 公共语言运行时 (CLR) 一起使用。通过 STL/CLR,现在可以在托管环境中使用所有的容器、迭代器和 STL 算法。

MFC 库

定义

Windows Vista 支持公共控件。[Windows Vista supports Common Controls.]

已经添加了 18 个新类或现有类中的 150 多个方法,用于支持 Windows Vista 中的功能,或改进当前 MFC 类中的功能。

使用新的 CNetAddressCtrl 类可以输入和验证 IPv4 和 IPv6 地址或 DNS 名称。新的 CPagerCtrl 类简化了 Windows 页导航控件的使用。新的 CSplitButton 类简化了 Windows splitbutton 控件的使用,便于我们选择默认或可选操作。

C++ 支持库

定义

C++ 引入了封送处理库。[C++ introduces the marshaling library.]

封送处理库为在本机和托管环境之间封送数据提供了一个易于使用的优化方法。封送处理库是其他更复杂、效率更低的方法(例如使用 PInvoke)的替代方法。有关更多信息,请参见 Overview of Marshaling in C++

ATL Server

定义

ATL Server 作为共享源项目发布。[ATL Server is released as a shared source project.]

大多数 ATL Server 基本代码已作为共享源项目发布在 CodePlex 上,而不是作为 Visual Studio 2008 的一部分进行安装。与 ATL Server 关联的若干文件不再是 Visual Studio 的一部分。有关已删除文件的列表,请参见Removed ATL Server Files

atlenc.h 中的数据编码和解码类以及 atlutil.h 和 atlpath.h 中的实用工具函数和类现在已成为 ATL 库的一部分。

Microsoft 将继续支持早期版本的 Visual Studio 中包含的 ATL Server 版本,只要这些版本的 Visual Studio 是受支持的。CodePlex 将继续以社区项目的形式开发 ATL Server 代码。Microsoft 不支持 CodePlex 版本的 ATL Server。

Visual C++ 编译器和链接器

编译器更改

定义

编译器支持托管增量生成。[The compiler supports managed incremental builds.]

如果指定此选项,则编译器在引用的程序集更改时不会重新编译代码。它将执行增量生成。仅当更改影响依赖代码时才会重新编译文件。有关更多信息,请参见“常规”属性页(项目)

不再支持与 ATL Server 相关的属性。[Attributes related to ATL Server are no longer supported.]

编译器不再支持曾与 ATL Server 直接相关的一些属性。有关已移除的属性的完整列表,请参见重大更改

编译器支持 Intel 内核微体系结构[The compiler supports Intel Core microarchitecture]

编译器包含在代码生成过程中对 Intel 内核微体系结构进行的优化。该优化默认情况下将启用,并且不能禁用,因为 Pentium 4 和其他处理器也使用该优化。

内部函数支持新一代的 AMD 和 Intel 处理器。[Intrinsics support newer AMD and Intel processors.]

多条新的内部指令帮助在新型 AMD 和 Intel 处理器中提供更强大的功能。有关新增内部指令的更多信息,请参见Supplemental Streaming SIMD Extensions 3 InstructionsStreaming SIMD Extensions 4 InstructionsSSE4a and Advanced Bit Manipulation IntrinsicsAES Intrinsics_mm_clmulepi64_si128__rdtscp

__cpuid 函数已更新。[The __cpuid function is updated.]

__cpuid 函数现在支持最新版本的 AMD 和 Intel 处理器的多项新功能。__cpuidex 内部指令是新增的并从最新处理器收集更多信息。

/MP 编译器选项减少了总生成时间。[The /MP compiler option reduces total build time.]

/MP 选项通过创建多个同时编译文件的进程,可以显著减少编译多个源文件的总时间。此选项在支持超线程、多处理器或多内核的计算机上尤其有用。

/Wp64 编译器选项和 __w64 关键字已否决。[The /Wp64 compiler option and __w64 keyword are deprecated.]

/Wp64 编译器选项和 __w64 关键字(检测 64 位可移植性问题)已被否决,并将在将来版本的编译器中移除。请使用面向 64 位平台的 Visual C++ 编译器,而不要使用此编译器选项和关键字。有关更多信息,请参见 Visual C++ 64 位编程

/Qfast_transcendentals

生成先验函数的内联代码。有关更多信息,请参见 /Qfast_transcendentals(强制快速先验)

/Qimprecise_fwaits

使用 /fp:except 编译器选项时,移除 try 块内部的 fwait 命令。有关更多信息,请参见 /Qimprecise_fwaits(移除 Try 块中的 fwaits)

链接器更改

定义

用户帐户控制信息现在由 Visual C++ 链接器 (link.exe) 嵌入到可执行文件的清单文件中。[User Account Control information is now embedded into manifest files for executables by the Visual C++ linker (link.exe).]

默认情况下启用此功能。有关更多信息,请参见用户帐户控制 (UAC) 如何影响应用程序。有关如何禁用此功能或如何修改默认行为的更多信息,请参见 /MANIFESTUAC(将 UAC 信息嵌入到清单中)

链接器现在具有 /DYNAMICBASE 选项,用于启用 Windows Vista 的地址空间布局随机化功能。[The linker now has the /DYNAMICBASE option to enable the Address Space Layout Randomization feature of Windows Vista.]

此选项修改可执行文件头,以指示是否应在加载时对应用程序随机重新设定基址。有关更多信息,请参见 /DYNAMICBASE(使用地址空间布局随机化功能)

Visual C++ 示例

Visual Studio 2008 的新示例

定义

CFileDialog 示例:记录事件顺序

创建一个自定义对话框,该对话框演示在创建 CFileDialog 时生成的事件。

CMNCTRL3 示例:演示 Visual Studio 2008 提供的新 MFC 控件

演示 Windows Vista 上随 MFC 一起提供的某些新控件,其中包括命令链接按钮 (CButton)、页导航控件 (CPagerCtrl)、拆分按钮 (CSplitButton) 和网络地址控件 (CNetAddressCtrl)。

NETADDR 示例:Vista 网络地址验证工具控件示例

演示 Windows Vista“网络地址验证工具”控件的使用。

StlClrLibrary 示例:演示 STL/CLR 功能

演示一些可在使用 STL/CLR 库时使用的功能。

Visual C++ 速成版

Visual C++ 速成版新增功能

定义

Visual C++ 速成版现在包括 Windows SDK

Visual C++ 速成版用户现在可以使用 Windows SDK,而无需单独下载和安装它。Visual C++ 速成版现在还包括 Win32 项目向导。

相关章节

定义

重大更改

列出 Visual C++ 2008 中的重大更改。

移植和升级程序

提供有关从其他平台移植并从 Visual C++ 早期版本升级的信息的链接。

如何:从先前版本的 Visual C++ 升级项目

提供从早期版本升级 Visual C++ 项目的链接。

请参见

其他资源

Visual C++ 入门

以前的产品更改