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.
- 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.
Visual C++ 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.
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).
- The compiler supports Intel Core microarchitecture
- The compiler contains tuning for the Intel Core microarchitecture during code generation. This tuning is on by default 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, and __rdtscp.
- The __cpuid function is updated.
- The __cpuid function now supports several new features from the latest revisions of AMD and Intel 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++.
- /Qfast_transcendentals
- Generates inline code for transcendental functions. For more information, see /Qfast_transcendentals (Force Fast Transcendentals).
- /Qimprecise_fwaits
- 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.