500 likes | 699 Views
Visual C++ 2008 { Was ist neu? }. Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH. Agenda. Visual C++ 2008 Wohin geht die Reise? Marshaling Library STL/CLR Visual C++ 2008 Feature Pack Die neue MFC TR1 Zusammenfassung. Begriffsklärung.
E N D
Visual C++ 2008{Was ist neu?} Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH
Agenda • Visual C++ 2008 • Wohin geht die Reise? • Marshaling Library • STL/CLR • Visual C++ 2008 Feature Pack • Die neue MFC • TR1 • Zusammenfassung
Begriffsklärung • Native Entwickler / Native Entwicklung • Pures C++, direkte API Ansteuerung, auch COM / DCOM Programmierung, kurz alles was keine Common Language Runtime benötigt, sondern direkt auf dem System ausgeführt wird. • Managed Entwickler / Managed Welt / Managed Entwicklung • C#, VB.NET, alles was zur Laufzeit die Common Language Runtime benötigt!
Visual C++ Historie… • C/C++ 7.0 • Programmers Workbench V2, MFC 1.0, First C++ version • Visual C++ 1 • Windows IDE, MFC 2.0 (Adds App Framework), Resource editor • VC++ 1.0 and 1.5 16 bit versions • VC++ 1.1 32-bit targeted at NT 3.1 and Win32S with 16-bit cross compiler • Visual C++ 2 • MFC 3.0, Templates, C++ Exceptions, First version targeted at Window NT • VC2.2 added Win95 • First 32-bit native compiler and IDE • Visual C++ 4.0 • MFC 4.0, (skipped v3 to catch up with MFC version), Namespaces, RTTI • Targeted at Windows 95 and Window NT • VC 4.2 was a major update with lots of internet support • Visual C++ 4.2 Enterprise Edition • SQL debugging and SQL projects This is anecdotal information supplied from the memories of the VC++ team and is not guaranteed to be 100% correct
Visual C++ Historie… • Visual C++ 5.0 • MFC 4.2, ATL 2.0, supported building ActiveX controls (ATL 1.0 and 1.1 were web releases) • Visual C++ 6.0 • MFC 4.2, ATL 3 • Visual C++ 7.0 (2002) • .NET 1.0, Managed Extensions for C++, LTCG, Only version that C# and C++ was same team • Visual C++ 7.1 (2003) • MFC 7.1, .NET 1.1, ATL Server • Visual C++ 8.0 (2005) • MFC 8.0, C++/CLI, Open MP, First 64-bit targeting version (ia64 and x64 ) • .NET 2.0 • Visual C++ 9.0 (2008) • .NET 3.5 This is anecdotal information supplied from the memories of the VC++ team and is not guaranteed to be 100% correct
Roadmap Visual C++ • Rund um native Entwicklung • Verbesserung nativer Bibliotheken, allem voran die MFC! • Unterstützung für Plattform Features wie zum Beispiel Multi-Core / Many-Core Programmierung • Modernisierung der Infrastruktur • Wirkliche Unterstützung von sehr großen Sourcecode Projekten • Schnellere Compilierungszeiten
Roadmap Visual C++ • Interoperabilitätstechnologien • Es soll einfacher werden existierenden, nativen Code in .NET zu nutzen • Wechsel auf ein neues Release soll deutlich einfacher werden als bisher
Visual C++ 2008Ein erster Schritt • Rund um native Entwicklung • MFC goodies für Vista (UI) • UAC Unterstützung der IDE • Vista SDK mit tausenden von API Funktionen • Modernisierung der Infrastruktur • Compiler Durchsatz: Metadata-basedincrementalmanagedbuildsandconcurrencymodulecompilation • .NET Framework Multi-Targeting • Hallo, Klassendesigner!
Visual C++ 2008Ein erster Schritt • Interoperabilitätstechnologien • Marshaling Library • STL/CLR
VC++ 2008: Common Controls und Vista • MFC Klassen und Editor Support für die neuen Windows Vista Common Controls • SysLink • Network address control • Command Link • Split button • Auch XP Support wurdeüberarbeitet, vieles war nichtrichtigunterstützt • Hunderte von messages, styles, notifications, etc. • Sogar Spy++ wurdeaktualisiert! • ImIdealfall Einfachneukompilieren!
Klassendesigner • Visualisiertnativen C++ code • Integriert in die IDE • Code wirdsynchronisiert • C++ Sprachkonzeptewerdenvisualisiert • e.g., templates, typedefs, enums, etc. • C++ Klassendesignerbenutzen um • Einarbeitung in existierenden Code • KlassendiagrammezurDokumentationhinzufügen
String? Klar, welcheAbbildung? • Die Auswahlistgroß… • single byte char array • Single byte char pointer • Multi-byte char array • Multi-byte char pointer • Double-byte char array • Double-byte char pointer • BSTR • CString • std::string • System::String
Ziele der Marshaling Library • Mixed-Mode Anwendungen müssen oft Daten umwandeln (Nativ <-> Managed) • Performance • Transformationen mittels der Laufzeit Marshaling Mechanismen ist Kompliziert und Verwirrend • Einfache Handhabung • Transformation eigener Datentypen muss möglich sein • Erweiterbarkeit
Marshaling Library • Unterstützt den Entwickler bei der Transformation der Daten • Übernimmt die Verwaltung des allokierten Speichers während des Marshaling Prozesses
Marshaling LibraryKontextfrei • #include <msclr/marshal.h> • Using namespace msclr::interop; • … • { • … • const char* quelle = “Hallo”; • System::String^ ziel; • ziel = marshal_as<System::String^>(quelle); • … • }
Marshaling Librarymit Kontext • #include <msclr/marshal.h> • Using namespace msclr::interop; • … • { • … • System::String^ quelle = “Hallo”; • const char* ziel; • marshal_contextctx; • ziel = ctx.marshal_as<const char*>(quelle); • … • }
{marshaling library } demo Dariusz Parys Developer Evangelist D&PE
Marshaling Library • marshal.h • Standard-Typen • marshal_windows.h • Windows Daten-Typen • marshal_cpp.h • STL Daten-Typen • marshal_atl.h • ATL Daten-Typen • Xyz.h • Eigene Daten-Typen
STL/CLR • Die Standard Template Library Implementierung für .NET • STL Kenntnisse können weiter verwendet werden • Einfacherer Datenaustausch zwischen .NET Collections und STL Containern
STL/CLR Container • Identisch • Container • Algorithmen • CLR verwaltet GarbageCollected • Header Dateien im „cliext“ Ordner • Namensbereich cliext
STL/CLR - Nutzung • using namespace System; • #include <cliext/vector> • int main() • { • cliext::vector<String^> v; • v.push_back(“Hallo ”); • v.push_back(“Welt!”); • cliext::vector<String^>::iterator it = v.begin(); • Console::Write(*it); • Console::WriteLine(v[1]); • }
STL/CLR - Datentypen • Speicherbare Datentypen • Referenztypen (R) und Handle (R^) • Wertetypen (V) • Built-in Datentypen (C++ und .NET) • Nicht speicherbare Datentypen • Native Klassen • Pointer
STL/CLR Container, Iteratoren und Algorithmen • Implementieren .NET Collection Schnittstellen • Vereinfachtes Interop • Iteratoren wie in STL • Nur lesende, nur schreibende oder beides • Prüfen ob im Gültigkeitsbereich (RangedChecked) • Algorithmen und Funktionen identisch wie bei der nativen STL • Anwendbar auf STL und STL/CLR!
STL/CLR Interop • Container kann aus einer .NET Collection erzeugt werden • Collection kann als Container „adaptiert“ werden • Kein Kopieren der Daten • Iteratoren Paar kann als Collection „adaptiert“ werden • Ebenfalls kein Kopieren der Daten
{STL/CLR } demo Dariusz Parys Developer Evangelist D&PE
Wunschliste nach 2008 • Rund um native Entwicklung • Große MFC Investments und Erweiterungenrund um Windows Funktionalität • ManyCore/MultiCore Support, 64 Bit Development • ModernisierungderInfrastruktur • Schnelle IDE imZusammenhangmitgroßenSourcebeständen • Code AnalyseUnterstützung • VerbesserteKompilierungszeiten • Bessere Debugging Funktionalität • Interoperabilitätstechnologien • Nahezuidentische Performance zwischennativer und managed Welt. • Verbessertes Native/Managed Debugging
{Visual C++ 2008 Feature Pack } announcing
MFC – Die Erweiterungen G Application Architecture Window Support General Purpose NEW! Frames Visual Manager Exceptions CWinApp Tabbed MDI Control Bars Office Ribbon File Services Dialogs ToolBar, Menu, StatusBar Doc/View Docking Panes Database Support Views Vista Common Dialogs Window Controls Vista Common Controls OLE Support Containers New Controls GDI Support More…
VisualManager (1) • Kontrolliert das Look & Feel • ZentralesZeichnendermeistenSteuerelemente • ZurLaufzeitauswählbare Look & Feels • Office XP • Native Windows XP/Windows Vista • Office 2003 • VisualStudio 2005 • Office 2007 (with color schemes)
Ribbon (2) CMFCRibbonApplicationButton CMFCRibbonQuickAccessToolBar CMFCRibbonCategory CMFCRibbonBar CMFCRibbonPanel CMFCRibbonColorButton CMFCRibbonButton
Weitere MFC Features (1) • NeueDialoge (z.B. der Color Picker) • Desktop Alerts (wieder Messenger oderauch Outlook) • Neue Controls • Advanced button • Shell tree und Liste • Mask edit • Property list
Weitere MFC Features (2) • Neue Common Controls • Command button, Split button • Network address control • Benutzereinstellungenwerdenautomatischverwaltet • Die neue MFC basiert auf derImplementierung von BCGSoft • Bitte die Office UI Lizenzseitens Microsoft beachten!
{die neue MFC } demo Dariusz Parys Developer Evangelist D&PE
Office UI Lizensierung • Office UI Lizenz wird benötigt • beim Ribbon Element • beim Office 2007 Look & Feel • Lizenz ist kostenfrei • Registierung unter http://msdn.microsoft.com/officeui
VC++ Libraries – TR1 • TR1 stehtfür “Technical Report on C++ Library Extensions” • tr1::shared_ptr • tr1::function, tr1::mem_fn, tr1::bind • tr1::regex • tr1::tuple, tr1::array, • tr1::type_traits • Zufallszahlengenerator • Kein C99 & special math Support
shared_ptr Vorteile • Automatische Speicherverwaltung • Objekt mit „new“ instanzieren • Löschen des Objektes übernimmt der shared_ptr<T> • Einsatzbereit für jede Klasse • Einfach von jetzt an immer benutzen!
Regular Expressions • Reguläre Ausdrücke sind • Kompakt, leicht gewöhnungsbedürftig • durch einen String dargestellt • Der Ausdruck erlaubt • Vergleiche mit dem kompletten Ausdruck • Suche im Ziel nach Teilen des Ausdrucks • Ersetzung durch einen weiteren Ausdruck
regex_match() • const regex r("[1-9]\\d*x[1-9]\\d*"); • for (string s; getline(cin, s); ) { • cout << (regex_match(s, r) ? "Yes" : "No") << endl; • } • Ausgabe: • 8x10 • Yes • 1920x1200 • Yes • 3.14x137 • No
regex_replace() • const regex r("(\\w+)( \\w+\\.?)? (\\w+)"); • const string fmt("$3, $1$2"); • for (string s; getline(cin, s); ) { • cout << "*** " << regex_replace(s, r, fmt) << endl; • } • Ausgabe: • William H. Gates • *** Gates, William H. • William Henry Gates • *** Gates, William Henry • Bill Gates • *** Gates, Bill
Verfügbarkeit • Visual C++ 2008 • Jetzt, auch in deutscher Edition • Die neue MFC und TR1 • Visual C++ 2008 Feature Pack • Momentan als Beta verfügbar
Zusammenfassung • Visual C++ ist das native Entwicklungswerkzeug und Microsoft investiert in diesen Bereich • Visual C++ ist im Bereich Interoperabilität zwischen der Nativen und der Managed Welt das Werkzeug der Wahl • Mit dem kommenden Feature Pack wird die MFC modern (UI) und hat eine Zukunft
Kontakt: Dariusz Parys • Mein Blog: • http://blogs.msdn.com/dparys • Meine Email: • dparys@microsoft.com
Visual Studio 2008weitere Angebote • Visual Studio Team System Information Day • Regelmäßige ganztägige Informationsveranstaltung von Microsoft • Praxisnahe Demos & viel Raum für Diskussionen • Details & Anmeldung: www.event-team.com/events/visualstudio • TeamConf 2008 – Die Visual Studio Team System Konferenz • VSTS in der Praxis - 22.-24. April 2008 in München • Anwenderberichte (Siemens, ABB, Commerzbank, Datev, Münchener Rück,..) • Fach- und Technologievorträge • Vortragsprogramm und Anmeldung: www.teamconf.de • Visual Studio Launch Promotion • Tauschen Sie Ihre Visual Studio Standard in eine höherwertige Visual Studio Edition Ihrer Wahl • Anrechnung in Höhe von 299 € beim Kauf eines anderen VS Produktes • vom 19. Februar bis zum 30. April 2008 • Nur bei den Partnern: PC Ware, SoftExpress, SOS und Zoschke(befinden sich alle in der Ausstellerhalle)
AsktheExperts Wir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.
© 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.