Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH
Visual C Wohin geht die Reise? Marshaling Library STL/CLR Visual C Feature Pack Die neue MFC TR1 Zusammenfassung
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!
C/C Programmers Workbench V2, MFC 1.0, First C++ version Visual C++ 1 Windows IDE, MFC 2.0 (Adds App Framework), Resource editor VC and bit versions VC 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 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 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 – MFC 4.2, ATL 2.0, supported building ActiveX controls (ATL 1.0 and 1.1 were web releases) Visual C – MFC 4.2, ATL 3 Visual C (2002) –.NET 1.0, Managed Extensions for C++, LTCG, Only version that C# and C++ was same team Visual C (2003) – MFC 7.1,.NET 1.1, ATL Server Visual C (2005) – MFC 8.0, C++/CLI, Open MP, First 64-bit targeting version (ia64 and x64 ) –.NET 2.0 Visual C (2008) –.NET 3.5 This is anecdotal information supplied from the memories of the VC++ team and is not guaranteed to be 100% correct
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
Interoperabilitätstechnologien Es soll einfacher werden existierenden, nativen Code in.NET zu nutzen Wechsel auf ein neues Release soll deutlich einfacher werden als bisher
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-based incremental managed builds and concurrency module compilation.NET Framework Multi-Targeting Hallo, Klassendesigner!
Interoperabilitätstechnologien Marshaling Library STL/CLR
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 nicht richtig unterstützt Hunderte von messages, styles, notifications, etc. ! Sogar Spy++ wurde aktualisiert! Im Idealfall Einfach neu kompilieren!
Visualisiert nativen C++ code Integriert in die IDE Code wird synchronisiert C++ Sprachkonzepte werden visualisiert e.g., templates, typedefs, enums, etc. C++ Klassendesigner benutzen um Einarbeitung in existierenden Code Klassendiagramme zur Dokumentation hinzufügen
Die Auswahl ist groß… 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
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
Unterstützt den Entwickler bei der Transformation der Daten Übernimmt die Verwaltung des allokierten Speichers während des Marshaling Prozesses
#include Using namespace msclr::interop; … { … const char* quelle = “Hallo”; System::String^ ziel; ziel = marshal_as (quelle); … }
#include Using namespace msclr::interop; … { … System::String^ quelle = “Hallo”; const char* ziel; marshal_context ctx; ziel = ctx.marshal_as (quelle); … }
{ marshaling library } Dariusz Parys Developer Evangelist D&PE
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
Die Standard Template Library Implementierung für.NET STL Kenntnisse können weiter verwendet werden Einfacherer Datenaustausch zwischen.NET Collections und STL Containern
Identisch Container Algorithmen CLR verwaltet Garbage Collected Header Dateien im „cliext“ Ordner Namensbereich cliext
using namespace System; #include int main() { cliext::vector v; v.push_back(“Hallo ”); v.push_back(“Welt!”); cliext::vector ::iterator it = v.begin(); Console::Write(*it); Console::WriteLine(v[1]); }
Speicherbare Datentypen Referenztypen (R) und Handle (R^) Wertetypen (V) Built-in Datentypen (C++ und.NET) Nicht speicherbare Datentypen Native Klassen Pointer
Implementieren.NET Collection Schnittstellen Vereinfachtes Interop Iteratoren wie in STL Nur lesende, nur schreibende oder beides Prüfen ob im Gültigkeitsbereich (Ranged Checked) Algorithmen und Funktionen identisch wie bei der nativen STL Anwendbar auf STL und STL/CLR!
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 } Dariusz Parys Developer Evangelist D&PE
Rund um native Entwicklung Große MFC Investments und Erweiterungen rund um Windows Funktionalität ManyCore/MultiCore Support, 64 Bit Development Modernisierung der Infrastruktur Schnelle IDE im Zusammenhang mit großen Sourcebeständen Code Analyse Unterstützung Verbesserte Kompilierungszeiten Bessere Debugging Funktionalität Interoperabilitätstechnologien Nahezu identische Performance zwischen nativer und managed Welt. Verbessertes Native/Managed Debugging
{ Visual C Feature Pack }
G G CWinApp Doc/View OLE Support Exceptions File Services Database Support Containers Frames Control Bars Dialogs Views Window Controls GDI Support Visual Manager Tabbed MDI Office Ribbon ToolBar, Menu, StatusBar Docking Panes Vista Common Dialogs Vista Common Controls New Controls More… General Purpose Window Support Application Architecture NEW!
Kontrolliert das Look & Feel Zentrales Zeichnen der meisten Steuerelemente Zur Laufzeit auswählbare Look & Feels Office XP Native Windows XP/Windows Vista Office 2003 VisualStudio 2005 Office 2007 (with color schemes)
CMFCRibbonApplicationButtonCMFCRibbonQuickAccessToolBar CMFCRibbonBar CMFCRibbonCategory CMFCRibbonPanel CMFCRibbonButton CMFCRibbonColorButton
Neue Dialoge (z.B. der Color Picker) Desktop Alerts (wie der Messenger oder auch Outlook) Neue Controls Advanced button Shell tree und Liste Mask edit Property list
Neue Common Controls Command button, Split button Network address control Benutzereinstellungen werden automatisch verwaltet Die neue MFC basiert auf der Implementierung von BCGSoft Bitte die Office UI Lizenz seitens Microsoft beachten!
{ die neue MFC } Dariusz Parys Developer Evangelist D&PE
Office UI Lizenz wird benötigt beim Ribbon Element beim Office 2007 Look & Feel Lizenz ist kostenfrei Registierung unter
TR1 steht fü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
Automatische Speicherverwaltung Objekt mit „new“ instanzieren Löschen des Objektes übernimmt der shared_ptr Einsatzbereit für jede Klasse Einfach von jetzt an immer benutzen!
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
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
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
Visual C Jetzt, auch in deutscher Edition Die neue MFC und TR1 Visual C Feature Pack Momentan als Beta verfügbar
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
Mein Blog: Meine
Visual Studio Team System Information Day Regelmäßige ganztägige Informationsveranstaltung von Microsoft Praxisnahe Demos & viel Raum für Diskussionen Details & Anmeldung: TeamConf 2008 – Die Visual Studio Team System Konferenz VSTS in der Praxis April 2008 in München Anwenderberichte (Siemens, ABB, Commerzbank, Datev, Münchener Rück,..) Fach- und Technologievorträge Vortragsprogramm und Anmeldung: 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)
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.