Upload
dulcie-justina-howard
View
221
Download
0
Embed Size (px)
DESCRIPTION
Enable developer success on Microsoft platforms by providing world-class native tools while bridging to next-generation technologies
Citation preview
Visual C++: What's next?Steve TeixeiraGroup Program ManagerMicrosoft Corporation
Q: What do these have in common?
A: THEY’RE NOT DEAD!
The Visual C++ Mission
Enable developer success on Microsoft platforms by providing world-class native tools while bridging to next-generation technologies
The Visual C++ customerWrites code that must compile cross-platformHas a substantial existing investment in C++ they wish to maintainBuilds software that requires a greater degree of runtime control than the CLR offers today
Roadmap: Three pillars of product focus
Add value to Microsoft native platform technologies
Renewed investment in native libraries, such as MFCAbility to interoperate between platform paradigmsSupport for platform innovations in areas such as concurrency
Native/managed bridgeC++/CLI language & IJW interopLibraries-based bridge technology
Developer agility & productivityIDE tooling that gracefully scales to XXL projectsCompiler front-end that supports IDE tooling and provides ever-improving build throughput
Orcas: First stop on the roadmap
Support for the latest Microsoft platform technologyNew MFC goodies for Vista UIUAC support in IDE and projectsNew Vista SDK with thousands of native APIs
Native/managed bridgeSTL/CLRMarshaling library
Developer agility & productivityCompiler throughput: Metadata-based incremental managed builds and concurrently module compilation.NET Framework multi-targetingWelcome back, class designer!
VC++ Orcas: New Common Controls
MFC encapsulations and related dialog editor support for new Windows Vista Common Controls
SysLinkNetwork address controlCommand LinkSplit button
While we’re at it, we’re adding the Windows XP-level support that we never managed to get to previously
Hundreds of messages, styles, notifications, etc.We’re even updating Spy++!
Conforming with style guidelines
We’ve tried to make MFC do the “heavy lifting” where it’s able so that you get the Vista/Aero look for free where possible and to also look great down-level to Windows 2000
Vista file dialogsVista look and feel (metrics, fonts, and “voice”)Vista-enabling UI (menus, toolbars, etc.)
New Vista Common Controls
VC++ Orcas Build Throughput
Metadata-based incremental builds for managed modules
Prevents “full stack” rebuilds for minor changesPotential to greatly increase build throughput for Solutions with managed project dependencies
New compiler switch to support multiple simultaneous module compilation
Currently, projects can be built in parallel, but modules are serializedWe’ve learned that project dependency trees can kill project-based parallelism
Class designerVisualize native C++ code
Fully integrated into the IDETight code synchronizationC++ language concepts are first-class citizens
e.g., templates, typedefs, enums, etc.Displays language specific terminology
Use the C++ class designer to:Understand existing codeAugment documentation with diagrams
C++ Class Designer
STL/CLR Implementation of the Standard Template Library on the .NET FrameworkEnables leveraging STL skills in applications that use .NET FrameworkEasy interop between native code in STL and managed code with .NET collectionsLeverages templates and generics together to achieve optimal performance and cross-language compatibility
STL/CLR DetailsProvides a set of containers, iterators and algorithms similar to STLIntroduces generic-based containers and iterators to operate on STL/CLR data across .NET assembliesEase data exchange between STL and .NET CollectionsCan be used in Mixed, Pure and Safe modes
Using STL/CLR
Pop Quiz!How many “standard” string types does a C++ developer use on a regular basis?
1. single byte char array2. single by char pointer3. multi-byte char array4. multi-byte char pointer5. double-byte char array6. double-byte char pointer7. BSTR8. CString9. std::string10. System::String11. System::Text::StringBuilder
Marshaling libraryA template-based C++ library for handling conversion and marshaling between common native and managed typesSyntax:#include <msclr/marshal.h>
using namespace msclr::interop;
ATYPE t = marshal_as<ATYPE>(fromtype);
Marshaling lib and interop
ref class MyControl : UserControl { // reference type std::vector<std::string>* words; // use native type
void Add(std::string s) { words->push_back(s); }public: void Add(String^ s) { Add(marshal_as<std::string>(s)); }
};
class Data { gcroot<XmlDocument> xmlDoc;public: void Load(std::string fileName) { XmlTextReader^ reader = gcnew XmlTextReader( marshal_as<System::String^>(fileName)); xmlDoc = gcnew XmlDocument(reader); }};
Other Orcasy things you should know
ATL Server has been liberated as a shared source project on CodePlex!/Wp64 switch is being deprecated/clr:oldSyntax is being deprecatedPre-Windows 2000 targeting is being retired from the native libraries
One more thing…
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions,
it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.