Komfortabler Dateimanager mit vielen Funktionen

Erster Ausblick auf die MFC 9

By Sven on 09.03.2007 - 09:41 in MFC, Visual Studio 2008

Auf Channel 9 ist ein Video erschienen, in dem Bill Dunlap und Steve Teixeira über die zukünftige Strategie von Visual C++ erzählen. Im letzten Sommer gab es im Team intensive Überlegungen, ob die schon länger anhaltende Bevorzugung von Managed Code gegenüber nativen Code in Visual C++ richtig ist. Mit der Befragung verschiedener Anwender (Systemintegratoren, ISV) stellte sich heraus, dass trotz der .NET-Hysterie immer noch die meisten Anwendungen in nativem C++ programmiert werden. Die Entwicklung basiert auf riesengroßen Quellcodearchiven in C++, die nicht mal eben auf .NET angepasst werden können. Stattdessen muss der Code gepflegt werden, nicht selten enthält er auch einiges an geistigem Eigentum.

Mit dem kommenden Visual Studio 9 (Orcas) soll nun für die C++-Sparte wieder mehr Wert auf die Unterstützung von nativem Code gelegt werden. Dazu wird die Interoperabilität zwischen nativem Code und Managed Code weiter verbessert, speziell die Konvertierung von einzelnen Dateitypen. Zudem wird Orcas auch eine STL in Managed Code für die CLR enthalten. Die MFC wird endlich wieder auf einen aktuellen Stand gebracht und soll viele Neuerungen in Vista unterstützen.

Die ersten Ergebnisse lassen sich bereits in der neuen Orcas-CTP vom März begutachten. Spielten sich die Änderungen in der MFC in der Orcas-CTP vom Januar im Vergleich zu VS 2005 nur im namenstechnischen Bereich ab, so enthält die Orcas-CTP vom März viele Änderungen, die wichtigsten möchte ich hier kurz skizzieren.

Entwickler, die mit ihren Anwendungen noch Windows 9x und NT4 unterstützen, müssen sich vor dem Umstieg auf Orcas samt MFC 9 die Frage stellen, ob sie dies auch weiterhin tun möchten. Mit der MFC 9 werden nämlich alle Brücken zu Windows 9x/NT4 abgerissen, die Mindestvoraussetzung für eine MFC 9-Anwendung ist Windows 2000. Auch die ISAPI-Unterstützung wurde entfernt.

CWnd enthält Nachrichtenhandler für neuere Systemnachrichten, für diese wurden auch neue Message-Cracker eingeführt. CFrameWnd bietet Unterstützung für die aus Vista bekannten ausblendbaren Menüs, die erst beim Drücken der Alt-Taste eingeblendet werden. CPropertySheet unterstützt nun auch die neuen Aero-Assistenten.

Die UI-Elemente CListCtrl, CTreeCtrl, CHeaderCtrl, CProgressCtrl und CToolTipCtrl aus der ComCtl32.dll unterstützen nun alle bis einschließlich Vista vorhandene Nachrichten und Stile. Das bereits mit der Version 4.71 eingeführte Pager-Control wird nun auch endlich gekapselt.

Neu ist auch CNetAddressCtrl, welches ein Editierfeld für Netzwerkadressen inkl. ihrer Verifizierung kapselt. Die Registrierung der Fensterklasse erfolgt mit der Funktion InitNetworkAddressControl, welche erstaunlicherweise zur Shell32.dll gehört und nicht zur ComCtl32.dll. Daher findet man im Windows SDK für Vista auch keinen Verweis innerhalb der Windows Controls, stattdessen werden die entsprechenden Macros unter Windows Shell – Shell Reference – Shell Macros aufgeführt.

Die Klasse CFileDialog zum Anzeigen eines “Datei öffnen/speichern”-Dialogs kann nun auch die neuen Dateidialoge von Windows Vista anzeigen. Vista zeigt zwar unter Umständen die neuen Dialoge selbstständig, allerdings auch nur, wenn die Anwendung keine Hookfunktion für diese Dialoge einsetzt. Da die MFC für die Implementation von CFileDialog aber zwingend auf die Hookfunktion angewiesen ist, zeigen MFC-Anwendungen unter Vista immer nur die alten Dialoge. In der MFC 9 nutzt CFileDialog unter Vista die COM-Schnittstellen für die neuen Dateidialoge. Der Entwickler verwendet CFileDialog wie bisher, der Rest geschieht automatisch unter der Haube.

Es ist sehr erfreulich, dass man bei Microsoft wohl eingesehen hat, dass die meisten C++-Entwickler ihre Sprache und ihre Anwendungen in nativem Code nicht einfach aufgeben wollen und können. Wenn sich jetzt auch noch Orcas in VC6-Performance ohne ständiges Geflicker präsentieren und der ClassWizard ein Comeback erleben würde, dann könnte ich guten Gewissens auf Orcas umsteigen und den VC6 in seinen wohlverdienten Ruhestand schicken. Aber ich fürchte, dass dies trotz der guten Aussichten so schnell wohl nicht passieren wird.

Es gibt 7 Kommentare zu diesem Beitrag

Trackback URL | RSS-Feed für Kommentare

  1. thomas sagt:

    warte doch ab – schließlich wird noch viel passieren bis zur final oder 😉

  2. Lefteous sagt:

    Ich frage mich vor allem ob Microsoft auch mal einen Blick auf andere Entwicklungsumgebungen macht. Was Visual Studio z. B. in Sachen Refactoring bietet ist absolut lächerlich – oder täusche ich mich?

  3. CoolWater sagt:

    @Lefteous
    Du täuschst dich nicht. Zumindest nicht was VC6 betrifft. Da ich neben VC6 auch noch in/mit Java/Eclipse programmiere, bin ich von der Eclipse-IDE natürlich verwöhnt (nicht nur in Sachen Refactoring) und stelle dann immer wieder fest, wie schlecht die VC-IDE doch ist… Da besteht echt Nachholbedarf…

  4. Sven sagt:

    Soweit ich weiß, gibt es für C# einen Refactoring-Support in VS 2005. Generell ist Refactoring für C++ wohl aufgrund der Komplexität der Sprache weitaus schwieriger zu handhaben. Mit Visual Assist gibt es ein AddIn für VC++, welches auch Refactoring-Support bietet.

    Welche C++-Entwicklungsumgebungen bieten denn eigentlich Refactoring?

  5. Lefteous sagt:

    Danke ich schaue mir das Addin gerne mal an. Ich kenne keine C++-Entwicklungsumgebung mit richtigem Rafactoring-Support. Ich kenne das nur aus C#- und Javaumgebungen und da gehört das zum guten Ton. Man kann einfach wesentlich effizienter arbeiten, weil man sowas automatatisch machen lassen kann.

  6. CoolWater sagt:

    Was mir auch schon unter XP aufgefallen ist, ist, dass z.b. der VC6-CPrintDialog auch (immernoch) das Win95-Look&Feel hat, außer im Debug-Modus, da wird der “neue” XP-Dialog angezeigt. Hat das in diesem Fall auch mit dem Hooking zu tun?

  7. Sven sagt:

    Das Hooking passiert (sofern von der MFC verwendet) immer in beiden Versionen. Neben CPrintDlg gibt es übrigens ein CPrintDlgEx, welches den in Windows 2000 erweiterten Dialog anzeigt.

Top