steve teixeira group program manager microsoft corporation

21
Visual C++: What's next? Steve Teixeira Group Program Manager Microsoft Corporation

Upload: dulcie-justina-howard

Post on 18-Jan-2018

221 views

Category:

Documents


0 download

DESCRIPTION

Enable developer success on Microsoft platforms by providing world-class native tools while bridging to next-generation technologies

TRANSCRIPT

Page 1: Steve Teixeira Group Program Manager Microsoft Corporation

Visual C++: What's next?Steve TeixeiraGroup Program ManagerMicrosoft Corporation

Page 2: Steve Teixeira Group Program Manager Microsoft Corporation

Q: What do these have in common?

A: THEY’RE NOT DEAD!

Page 3: Steve Teixeira Group Program Manager Microsoft Corporation

The Visual C++ Mission

Enable developer success on Microsoft platforms by providing world-class native tools while bridging to next-generation technologies

Page 4: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 5: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 6: Steve Teixeira Group Program Manager Microsoft Corporation

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!

Page 7: Steve Teixeira Group Program Manager Microsoft Corporation

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++!

Page 8: Steve Teixeira Group Program Manager Microsoft Corporation

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.)

Page 9: Steve Teixeira Group Program Manager Microsoft Corporation

New Vista Common Controls

Page 10: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 11: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 12: Steve Teixeira Group Program Manager Microsoft Corporation

C++ Class Designer

Page 13: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 14: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 15: Steve Teixeira Group Program Manager Microsoft Corporation

Using STL/CLR

Page 16: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 17: Steve Teixeira Group Program Manager Microsoft Corporation

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);

Page 18: Steve Teixeira Group Program Manager Microsoft Corporation

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); }};

Page 19: Steve Teixeira Group Program Manager Microsoft Corporation

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

Page 20: Steve Teixeira Group Program Manager Microsoft Corporation

One more thing…

Page 21: Steve Teixeira Group Program Manager Microsoft Corporation

© 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.