Visual C++ 2008 Feature Pack

Werbung
{ Was ist neu?}
Dariusz Parys
Developer Evangelist
Microsoft Deutschland GmbH
Visual C++ 2008
Wohin geht die Reise?
Marshaling Library
STL/CLR
Visual C++ 2008 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++ 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++ 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
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 <msclr/marshal.h>
Using namespace msclr::interop;
…
{
…
const char* quelle = “Hallo”;
System::String^ ziel;
ziel = marshal_as<System::String^>(quelle);
…
}
#include <msclr/marshal.h>
Using namespace msclr::interop;
…
{
…
System::String^ quelle = “Hallo”;
const char* ziel;
marshal_context ctx;
ziel = ctx.marshal_as<const char*>(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 <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]);
}
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++ 2008
Feature Pack }
Application
Architecture
Window
Support
General
Purpose
Visual Manager
Frames
Exceptions
Tabbed MDI
CWinApp
Control Bars
Office Ribbon
ToolBar, Menu,
StatusBar
Dialogs
File Services
G
Docking Panes
Doc/View
Views
Vista Common Dialogs
Database
Support
Vista Common Controls
Window Controls
New Controls
OLE Support
GDI Support
More…
Containers
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)
CMFCRibbonApplicationButton
CMFCRibbonQuickAccessToolBar
CMFCRibbonCategory
CMFCRibbonBar
CMFCRibbonPanel
CMFCRibbonColorButton
CMFCRibbonButton
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
http://msdn.microsoft.com/officeui
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<T>
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++ 2008
Jetzt, auch in deutscher Edition
Die neue MFC und TR1
Visual C++ 2008 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:
http://blogs.msdn.com/dparys
Meine Email:
[email protected]
weitere 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)
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.
Herunterladen