Share via

What's New in Visual C++ 2008

This topic introduces the new features and changes found in this Visual Studio 2008 release.

Visual C++ Integrated Development Environment (IDE)



Dialog boxes that are created in ATL, MFC, and Win32 applications now comply with the Windows Vista style guidelines.

When you create a new project by using Visual Studio 2008, all dialog boxes that you insert into your application will comply with the Windows Vista style guideline. If you recompile a project that you created with an earlier version of Visual Studio, any existing dialog boxes will maintain the same look that they previously had. For more information about how to insert dialog boxes into your application, see Dialog Editor.

The ATL Project wizard now has an option to register components for all users.

Beginning with Visual Studio 2008, the COM components and type libraries that are created by the ATL Project wizard are registered in the HKEY_CURRENT_USER node of the registry unless you select Register component for all users. For more information, see Application Settings, ATL Project Wizard.

The ATL Project wizard no longer provides an option to create attributed ATL projects.

Beginning with Visual Studio 2008, the ATL Project wizard does not have an option to change the attributed status of a new project. All new ATL projects that the wizard creates are now unattributed.

Writing to the registry can be redirected.

With the introduction of Windows Vista, writing to certain areas of the registry requires a program to run in elevated mode. It is not desirable to always run Visual Studio in elevated mode. Per-user redirection automatically redirects registry writes from HKEY_CLASSES_ROOT to HKEY_CURRENT_USER without any programming changes. For more information, see Linker Property Pages.

The Class Designer now has limited support for native C++ code.

In earlier versions of Visual Studio, the Class Designer worked only with Visual C# and Visual Basic. C++ users can now use the Class Designer, but only in read-only mode. For more information about how to use the Class Designer with C++, see Working with Visual C++ Code in Class Designer.

The project wizard no longer has an option to create a C++ SQL Server project.

Beginning with Visual Studio 2008, the new project wizard does not have an option to create a C++ SQL Server project. SQL Server projects created by using an earlier version of Visual Studio will still compile and work correctly.

Visual C++ Libraries




Applications can be bound to specific versions of the Visual C++ libraries.

Sometimes an application depends on updates that were made to the Visual C++ libraries after a release. In this case, running the application on a computer that has earlier versions of the libraries can cause unexpected behavior. You can now bind an application to a specific version of the libraries so that it will not run on a computer that has an earlier version of the libraries. For more information, see Redistributing an Application and Binding It to Specific Libraries.

STL/CLR Library



Visual C++ now includes the STL/CLR Library.

The STL/CLR Library is a packaging of the Standard Template Library (STL), a subset of the Standard C++ Library, for use with C++ and the .NET Framework common language runtime (CLR). With STL/CLR, you can now use all the containers, iterators, and algorithms of STL in a managed environment.

MFC Library



Windows Vista supports Common Controls.

Over 150 methods in 18 new or existing classes have been added to support features in Windows Vista, or to improve functionality in current MFC classes.

The new CNetAddressCtrl class enables you to input and validate IPv4 and IPv6 addresses or DNS names. The new CPagerCtrl class simplifies use of the Windows pager control. And the new CSplitButton class simplifies the use of the Windows splitbutton control to select a default or optional action.

C++ Support Library



C++ introduces the marshaling library.

The marshaling library provides an easy and optimized way to marshal data between native and managed environments. The library is an alternative to more complex and less efficient approaches such as Using PInvoke. See Overview of Marshaling in C++ for more information.

ATL Server



ATL Server is released as a shared source project.

Most of the ATL Server code base has been released as a shared source project on CodePlex and is not installed as part of Visual Studio 2008. Several files associated with ATL Server are no longer part of Visual Studio. For the list of removed files, see Removed ATL Server Files.

Data encoding and decoding classes from atlenc.h and utility functions and classes from atlutil.h and atlpath.h are now part of the ATL library.

Microsoft will continue to support versions of ATL Server that are included in earlier releases of Visual Studio as long as those versions of Visual Studio are supported. CodePlex will continue development of the ATL Server code as a community project. Microsoft does not support a CodePlex version of ATL Server.

Visual C++ Compiler and Linker

Compiler Changes



The compiler supports managed incremental builds.

When you specify this option, the compiler will not recompile code when a referenced assembly changes. Instead it will perform an incremental build. Files are recompiled only if the changes affect the dependent code. For more information, see General Property Page (Project).

Attributes related to ATL Server are no longer supported.

The compiler no longer supports several attributes that were directly related to ATL Server. For a complete list of the removed attributes, see Breaking Changes.

The compiler supports Intel Core microarchitecture

The compiler contains tuning for the Intel Core microarchitecture during code generation. By default, this tuning is on and cannot be disabled as it also helps Pentium 4 and other processors.

Intrinsics support newer AMD and Intel processors.

Several new intrinsic instructions support the greater functionality in more recent AMD and Intel processors. For more information about the new intrinsics, see Supplemental Streaming SIMD Extensions 3 Instructions, Streaming SIMD Extensions 4 Instructions, SSE4A and Advanced Bit Manipulation Intrinsics, AES Intrinsics, _mm_clmulepi64_si128, and __rdtscp.

The __cpuid function is updated.

The __cpuid, __cpuidex functions now support several new features from the latest revisions of AMD and Intel processors. The __cpuidex intrinsic is new and gathers more information from recent processors.

The /MP compiler option reduces total build time.

The /MP option can significantly reduce the total time to compile several source files by creating several processes that compile the files simultaneously. This option is especially useful on computers that support hyperthreading, multiple processors, or multiple cores.

The /Wp64 compiler option and __w64 keyword are deprecated.

The /Wp64 compiler option and __w64 keyword, which detect 64-bit portability issues, are deprecated and will be removed in a future version of the compiler. Instead of this compiler option and keyword, use a Visual C++ compiler that targets a 64-bit platform. For more information, see 64-Bit Programming with Visual C++.


Generates inline code for transcendental functions. For more information, see /Qfast_transcendentals (Force Fast Transcendentals).


Removes the fwait commands internal to try blocks when you use the /fp:except compiler option. For more information, see /Qimprecise_fwaits (Remove fwaits Inside Try Blocks).

Linker Changes



User Account Control information is now embedded into manifest files for executables by the Visual C++ linker (link.exe).

This feature is enabled by default. For more information, see How User Account Control (UAC) Affects Your Application. For more information about how to disable this feature, or how to modify the default behavior, see /MANIFESTUAC (Embeds UAC information in manifest).

The linker now has the /DYNAMICBASE option to enable the Address Space Layout Randomization feature of Windows Vista.

This option modifies the header of an executable to indicate whether the application should be randomly rebased at load time. For more information, see /DYNAMICBASE (Use address space layout randomization).

Visual C++ Samples

New Samples for Visual Studio 2008



CFileDialog Sample: Logging Event Order

Creates a custom dialog box that shows events that are generated when you create a CFileDialog.

CMNCTRL3 Sample: Demonstrates New MFC Controls Available in Visual Studio 2008

Demonstrates some of the new controls that are available with MFC on Windows Vista, including the command link button (CButton), the pager control (CPagerCtrl), the split button (CSplitButton), and the network address control (CNetAddressCtrl).

NETADDR Sample: Vista Net Address Verifier Control Sample

Demonstrates use of the Windows Vista "Net Address Verifier" control.

StlClrLibrary Sample: Demonstrates STL/CLR Capabilities

Demonstrates some of the capabilities available when using the STL/CLR Library.

Visual C++ Express Edition

Additions to Visual C++ Express Edition



Visual C++ Express Edition now includes the Windows SDK

Users of Visual C++ Express Edition can now use the Windows SDK without having to download and install it separately. Visual C++ Express Edition now also includes the Win32 Project Wizard.



Breaking Changes

Lists the breaking changes in Visual C++ 2008.

Porting and Upgrading Programs

Provides links to information about porting from other platforms, and upgrading from previous releases of Visual C++.

How to: Upgrade Projects from Previous Versions of Visual C++

Provides links to upgrading Visual C++ projects from earlier versions.

See Also

Other Resources

Getting Started with Visual C++

Previous Product Changes

Change History




July 2009

Added information about a project removed from the new project wizard.

Content bug fix.