Komfortabler Dateimanager mit vielen Funktionen

Visual Studio

2.7 MiB mehr für nichts

By Sven on 12.11.2007 - 18:52 in MFC, Visual Studio 2008 with 1 Kommentar

Pat Brenner hat im VC-Blog meine schlimmsten Befürchtungen bestätigt: Die Erweiterungen von MFCnext werden komplett in die MFCxx.dll gepackt, was deren Größe mal eben von 1.1 MiB auf 3.8 MiB ansteigen lässt. Einer der Vorteile der MFCxx.dll war immer, dass sie über die Jahre hinweg relativ schlank geblieben ist. All das ist Geschichte, stattdessen wird die MFC jetzt mit Klassen vollgestopft, welche wohl die wenigsten benötigen. Und am allerwenigsten diejenigen, die schon eine eigene UI-Bibliothek einsetzen.

Ich hoffe immer noch inständig, dass sich das unnützte Zeug beim Erstellen einer angepassten MFC-Version recht einfach ausblenden lassen wird. Sollte Microsoft es aber schaffen, MFC und MFCnext untrennbar miteinander zu verquicken, dann wird die MFC 9.0 meine letzte MFC-Version sein. Ich hatte eigentlich gedacht, dass ich mit dem Umstieg von VC6 auf VS 2008 nun längere Zeit nichts mehr mit MFC-Anpassungen zu tun haben und automatisch immer in den Genuss der neuesten Version kommen werde. Aber so kann man sich täuschen.

Weitere Infos zum MFC UI-Update

By Sven on 08.11.2007 - 20:14 in MFC, Visual Studio 2008 with 7 Kommentare

Im Codejock-Forum hat Kirk Stowell (der Chef von Codejock) ein paar interessante Infos zur ganzen Geschichte veröffentlicht, die ich euch nicht vorenthalten möchte. Demnach hat Microsoft schon vor einigen Jahren Codejock kontaktiert, um die MFC für Visual Studio 2005 etwas aufzupeppen. Es gab ein paar Gespräche, zu mehr führte es aber nicht.

Im März dieses Jahres ist Microsoft erneut mit Codejock in Kontakt getreten und hat Interesse daran geäußert, Codejocks MFC-Komponenten in die MFC von Visual Studio 2008 aufzunehmen. Das Budget für mögliche Lizenzgebühren sei aber nicht gerade hoch.

Im August ließ Microsoft wieder von sich hören. Man wollte mit Codejock über Erweiterungspläne der MFC diskutieren, als auch über die möglichen Auswirkungen auf die MFC-Produkte von Codejock. In diesen Gesprächen kam herüber, dass Microsoft für wenig Geld die MFC-Komponenten von BCGSoft lizenzieren wird und diese somit Teil der MFC werden sollen.

Kirk gab zu bedenken, dass sich diese Entscheidung als großer Fehler herausstellen könnte. Aus Erfahrung gäbe es einige Probleme mit den BCG-Komponenten, angefangen von der Stabilität bis hin zur recht schwachen Performance. Er wies Microsoft auch darauf hin, dass sich gerade deshalb viele BCG-Anwender für einen Wechsel zu den Produkten von Codejock entschieden hätten und schlug vor, dass Microsoft doch die Meinung einiger dieser Kunden einholen könnte. Der Vertrag mit BCGSoft war aber schon unterschrieben und Microsoft sah keine Notwendigkeit mehr, diese Sache weiter zu verfolgen.

Genau wie Kirk glaube ich auch, dass Microsoft eine ziemlich unglückliche Entscheidung getroffen hat. Die Performance-Probleme waren damals auch einer der Gründe für mich, vor vier Jahren zu Codejock zu wechseln. Ich kann mich noch gut daran erinnern, dass die Einbindung der BCGControlBar in FileSearch (SpeedCommander 9) den Start der Anwendung um knapp zwei Sekunden verzögerte. Also verzichtete ich damals in FileSearch auf die anpassbaren Menüs, stattdessen zeigte sich FileSearch nur mit normalen Menüs.

Gemeinsam mit Rainer haben wir damals auch die Aufrufgeschwindigkeit der frei downloadbaren Beispieldateien von Codejock und BCGSoft miteinander verglichen. Die von BCGSoft starteten alle merklich langsamer. Auf Rainers Rechner, der damals auch nicht gerade der schnellste war, wurde dies besonders deutlich.

Microsoft wird also einiges an Mühe aufwenden müssen, damit die MFCnext ein stabiles und performantes Produkt wird. Es ist als Entwickler immer schwer, sich in eine so umfangreiche Bibliothek einzuarbeiten. Mal schauen, wie Microsoft das meistern wird.

The Next Generation

By Sven on 08.11.2007 - 01:49 in MFC, Visual Studio 2008 with 1 Kommentar

In Barcelona findet in dieser Woche die TechEd Developers 2007 statt, also der richtige Zeitpunkt, um Großes zu verkünden. Die erste wichtige Info ist, dass Visual Studio 2008 bis zum Ende dieses Monats verfügbar sein wird und damit wohl allen MSDN-Abonnenten zur Verfügung gestellt wird.

Schon seit einiger Zeit laufen einem im Web Hinweise über den Weg, dass auch für die MFC einige Überraschungen zu erwarten sind. Microsoft hat nun die Katze aus dem Sack gelassen, und diese Katze ist wirklich fett. Die MFC bekommt ein vollständiges UI-Toolkit spendiert (genannt MFCnext), unter anderem mit

  • Office 2007-Ribbon
  • Erweiterte Docking-Funktionen
  • Verschiedene Styles (Office 2003, Office 2007, …)
  • Etliche neue UI-Elemente (Eigenschaftsseiten, Maskierbares Editierfeld, Farbpicker, …)

Der erste Release Candidate soll schon im Dezember veröffentlicht werden, die endgültige Freigabe ist für März 2008 geplant.

Auf den ersten Blick sieht das auch alles Klasse aus, mit dem zweiten sieht man aber bekanntlich besser. Und man stellt fest, dass dies alles ja schon seit Jahren zur Verfügung steht. Zwar nicht mit der MFC selbst, wohl aber mit den Toolkits anderer Hersteller (Codejock oder BCGSoft). Hier stellt sich nun die Frage, wie der Vergleich zwischen den neuen MFC-Erweiterungen und den etablierten Bibliotheken ausschauen wird, sowohl vom Umfang als auch von der Performance und der Codequalität. Auch wird interessant, wie die beiden Hersteller mit der Situation klarkommen, dass die von ihnen verkauften Funktionen nun plötzlich Bestandteil von Visual Studio sind und damit für jeden MFC-Anwender auch kostenfrei zur Verfügung stehen. Wenn sich Microsoft einmal entschließen sollte, jedem Windows einen vernünftigen Dateimanager beizulegen, dann hätte ich wohl ein ähnliches Problem.

Dank Jochen Kalmbach brauchen wir mit der Beantwortung dieser Fragen aber wohl nicht bis zum Dezember warten. In seiner Information zum geplanten MFC-Update verrät er nämlich, dass die meisten Controls von BCGSoft “portiert” wurden. Wenn man sich mal die von ihm gemachten Fotos der Session anschaut und diese mal mit den Headerdateien der BCGControlBar Professional Edition vergleicht, dann entdeckt man auch erstaunlich viele Gemeinsamkeiten mit den BCG-Klassen. “Portiert” heißt dann vermutlich eher “aufgekauft und umbenannt”. Aus Raider wird also Twix, sonst ändert sich nichts.

Und genau das ist für mich der Punkt, auch in Zukunft weiter auf Codejock zu setzen. Bis einschließlich SpeedCommander 9 habe ich ja bereits mit der BCGControlBar gearbeitet, mit SpeedCommander 10 erfolgte der Wechsel auf das Xtreme Toolkit Pro. Und diesen Wechsel habe ich bisher keine einzige Sekunde bereut. Nach meiner Erfahrung ist die Codejock-Bibliothek nämlich um einiges performanter und auch übersichtlicher und moderner aufgebaut. Das Klassenlayout der aktuellen BCGControlBar-Version hat dagegen noch erstaunlich viel Gemeinsamkeiten mit den ganz frühen Versionen, die ich noch verwendet habe. Das mag gut für die Abwärtskompatibilität sein, so ein altes Fundament hat aber leider auch Nachteile. Neue Sachen werden nämlich immer nur angebaut und irgendwann schwindet die Übersichtlichkeit.

Wer also schon mal schauen will, wie sich die neuen UI-Elemente in der Praxis anfühlen, der muss sich einfach nur die Testversion der BCGControlBar Professional Edition herunterladen. Auf der gleichen Seite gibt es auch bereits kompilierte Beispielanwendungen. Spannend wird sicher sein, wie die Zukunft der BCGControlBar ausschaut. Ich glaube kaum, dass BCGSoft damit noch viel Umsatz machen wird. Aber vermutlich wird der Scheck von Microsoft groß genug gewesen sein, um die Schmerzen einigermaßen in Grenzen zu halten. Weitaus schwieriger wird es dagegen für Codejock werden. Ich hoffe wirklich, dass sich die Jungs durch diese Ankündigung nicht entmutigen lassen und auch in Zukunft gute Umsätze haben. Es wäre nämlich äußerst schade, wenn Codejock dadurch auf der Strecke bleiben würde.

EasyTabs für Visual Studio 2005/2008

By Sven on 05.10.2007 - 15:03 in Visual Studio 2005, Visual Studio 2008 with 27 Kommentare

Ich hatte ja schon geschrieben, dass ich auf der Grundlage von WndTabs ein Add-In für Visual Studio 2005/2008 entwickelt habe. Nach einem kleinen internen Praxistest habe ich nun beschlossen, das Add-In auch anderen interessierten Entwicklern kostenfrei zur Verfügung zu stellen.

Im folgenden nun eine kurze Beschreibung der wichtigsten Funktionen:

1. Registerkarten

Visual Studio zeigt zwar geöffnete Dokumente bereits als Registerkarten an, allerdings sind die Konfigurationsmöglichkeiten doch sehr eingeschränkt. EasyTabs bietet hier bedeutend mehr Flexibilität, die Registerkarten können entweder oben oder unten angeordnet werden. Eine weitere herausragende Eigenschaft ist das Gruppieren von Dateien. Dateien, die zueinander gehören (z.B. .cpp/.h/.idl), können zusammen auf einer Registerkarte angezeigt werden. Reicht der Platz nicht mehr für alle angezeigten Dokumente, dann zeigt EasyTabs die Registerkarten auch in mehreren Reihen an. So hat man immer auch wirklich alle geöffneten Dokumente im Blick.

2. Anordnung

Die Registerkarten für die geöffneten Dokumente können auf verschiedene Weise angeordnet werden. Im MDI-Modus werden die Fenster stets in der Z-Order angezeigt. Das heißt, dass sich die Registerkarte für das aktive Fenster immer ganz links befindet, rechts daneben befindet sich das zuvor verwendete Fenster usw. Alternativ können die Registerkarten auch alphabetisch angeordnet werden. In der Standardeinstellung werden die Dateien in der Reihenfolge ihres Öffnens angezeigt und behalten diese während der gesamten Sitzung auch bei.

3. Nummerierung

Jede Registerkarte erhält eine Nummer, die über mehrere Arbeitssitzungen erhalten bleiben kann. Die Nummer einer Registerkarte kann auf Wunsch angezeigt werden. Für die Aktivierung der Registerkarten 1 bis 9 können auch Tastenkürzel zugeordnet werden, so dass diese schnell erreichbar sind. Die Zuordnung der Tastenkürzel erfolgt über den Einstellungsdialog von Visual Studio.

4. Namen kürzen

Besonders lange Dateinamen kann EasyTabs bei der Anzeige auch kürzen. Dies kann über das Festlegen einer bestimmten Länge erfolgen, es ist aber auch möglich, bestimmte übereinstimmende Zeichen am Anfang und/oder am Ende des Dateinamens zu entfernen.

5. Menüs

Durch einen Klick mit der rechten Maustaste auf eine Registerkarte öffnet sich das Kontextmenü, welches Befehle zur Fenster- und Dateiverwaltung enthält. Hier kann z.B. des Schreibschutzattribut gesetzt oder gelöscht werden, zudem wird das Explorer-Kontextmenü für die jeweilige Datei angezeigt. Eine nützliche Funktion ist auch das Öffnen eines sich gerade in Bearbeitung befindenden Dialogs als Textdatei.

6. Anzahl der offenen Fenster begrenzen

Wer den Wald vor lauter Fenstern nicht mehr sieht, der kann festlegen, dass nur eine bestimmte Anzahl an Fenstern geöffnet bleiben soll. Beim Öffnen eines neuen Fensters schließt EasyTabs dann automatisch das Fenster, was am wenigsten verwendet wurde.

7. Während des Debuggens geöffnete Dateien automatisch schließen

Eine recht nützliche Funktion ist das automatische Schließen von Fenstern, die während des Debuggens geöffnet werden. Meistens handelt es sich dabei um Header- und Quellcodedateien von Bibliotheken (z.B. MFC), die beim Debuggen von Funktionen angezeigt werden. Nach einiger Zeit wird der Arbeitsbereich mit diesen Fenstern quasi überschwemmt, sofern sie nicht explizit wieder geschlossen werden.

EasyTabs übernimmt auf Wunsch das automatische Schließen nach jeder Debugsitzung. Im Einstellungsdialog kann festgelegt werden, auf welche Verzeichnisse hier geachtet werden soll.

8. IDE

Neben der Fensterverwaltung bietet EasyTabs noch zwei weitere Funktionen, welche die IDE erweitern. So kann der Dialogeditor gezwungen werden, auch in der Entwurfsansicht die Tastenkürzel der Dialogelemente anzuzeigen. Auch die Breite der Spalten im Stringtabelleneditor kann gespeichert und beim nächsten Öffnen wieder hergestellt werden.

9. Download

Dies war nur eine kleine Einführung in EasyTabs, im Einstellungsdialog sind noch ein paar weitere Funktionen zu finden. Für jede Einstellung ist eine Hilfe verfügbar, einfach auf das Fragezeichen in der Titelzeile des Einstellungsdialogs klicken und anschließend auf das Dialogelement selbst. Wer bis hierhin durchgehalten hat, der wird nun mit dem Downloadlink von EasyTabs belohnt.

Einblick in .NET-Quellen

By Sven on 04.10.2007 - 15:18 in Visual Studio 2008 with Keine Kommentare

Scott Guthrie schreibt in seinem Blog, dass mit der Freigabe von Visual Studio 2008 auch die (meisten) Quelltexte des .NET-Frameworks eingesehen werden können. Als MFC-Entwickler weiß ich, wie wichtig das bei der täglichen Arbeit sein kann. Zum einen steigt das Verständnis für die Funktionen unter der Haube, dazu laden die Quelltexte auch zum Schmökern ein, wenn man sich fragt, wie das eine oder andere verwirklicht wurde.

Vielleicht kommt Microsoft ja auch noch auf die Idee, das gleiche mit dem Windows-Quellcode zu machen. Es wäre schon nett, wenn man sich beim Debuggen auch mit Hilfe des Quelltextes durch die jeweiligen Windows-Funktionen kämpfen könnte. Ich befürchte aber, dass dies so schnell nicht passieren wird.

(gefunden bei Karsten Samaschke)

Ein Spiel zwischendurch

By Sven on 21.09.2007 - 12:23 in Visual Studio 2005, Visual Studio 2008 with 7 Kommentare

Softwareentwicklung kann recht anstrengend sein, das weiß auch Microsoft. Ein kleines Spielchen zwischendurch kann die Gedanken etwas auflockern. Was liegt also näher, als ein solches Spiel nahtlos in die IDE von Visual Studio 2005/2008 zu integrieren?

Microsoft hat sich für eine abgewandelte Version von Memory entschieden. Es wird automatisch gestartet, wenn man im Dialogeditor die Tastenkürzel zuordnen möchte. Egal, wieviele Tastenkürzel man schon vergeben hat, die Ansicht ist immer die gleiche:

Dialogeditor ohne Tastenkürzel

Leider hat man nicht daran gedacht, den Schwierigkeitsgrad einstellbar zu machen. Je älter der Programmierer umfangreicher der Dialog ist, umso schwerer wird es, das Spiel zu gewinnen. Auch die Länge des Spiels kann sich durchaus etwas hinziehen.

Um das Spiel etwas abzukürzen, habe ich meinem Add-In einen Cheat für eine Sofortlösung spendiert. Nach dem Öffnen des Dialogeditors werden die bereits vergebenen Tastenkürzel sofort angezeigt:

Dialogeditor mit Tastenkürzel

Eine weitere Sache, die mich auch etwas stört, ist die Spaltenbreite im Stringtabellen-Editor. Man kann die Spaltengrößen von “ID”, “Wert” und “Beschriftung” zwar beliebig ändern, bei der nächsten Anzeige sind letzten Positionen aber wieder vergessen. Auch hier bietet das Add-In Abhilfe und stellt die vorherigen Größen auf Wunsch automatisch wieder her.

Schmerzfrei tabben

By Sven on 12.09.2007 - 11:49 in Visual Studio 2005, Visual Studio 2008 with 6 Kommentare

Ich habe ja schon hier und da berichtet, dass ich WndTabs in Visual Studio 2005/2008 wirklich sehr vermisse. Wer WndTabs noch nicht kennt, dem empfehle ich eine kleine Tour durch die Funktionen. Insbesondere die erweiterten Funktionen, die man für 10$ freischalten konnte, erleichtern die Fensterverwaltung enorm.

In den letzten vier Wochen habe ich die meiste Zeit unter Visual Studio 2008 verbracht und musste schmerzhaft feststellen, dass ich mir bei ein paar mehr geöffneten Fenster mitunter sehr verloren vorkam. Einerseits steckt die Leiste mit den Registerkarten nun oben und liegt damit nicht mehr in meinem primären Blickfeld, zum anderen ist die schwarze Schrift auf dem doch recht dunklen Hintergrund nicht ganz einfach zu erkennen. Dazu fehlt natürlich auch die gewohnte Gruppierung von Header- und Quellcodedateien. Ich habe mich oft dabei ertappt, wie ich mit den Augen verzweifelt die Leiste abgrase, um die passende Datei zu finden. Zwar kann man die Reihenfolge durch Drag&Drop ändern (wie ich erst vor kurzem festgestellt habe), es wäre aber schön, wenn dies automatisch geschehen könnte. Zudem werden die Registerkarten nur in einer Reihe angezeigt. Reicht der Platz nicht aus, dann fallen sie links bzw. rechts herunter und sind nur noch über das Menü rechts erreichbar.

Der Wunsch nach einer vernünftigen Anzeige wurde also immer größer. Also habe ich mir den Quellcode von WndTabs geschnappt und mal geschaut, ob sich da etwas machen lässt. Nachdem die Kernbereiche lokalisiert waren, habe ich den Assistenten von Visual Studio ein neues AddIn-Projekt erstellen lassen und die wichtigsten Elemente von WndTabs eingearbeitet. Die Darstellung und Verwaltung der gruppierten Tabs war etwas schwerer, da diese nicht Bestandteil des verfügbaren Quellcodes sind.

Nach einer Woche Arbeit ist das AddIn nun einsetzbar. Zwar fehlen noch ein paar Funktionen (u.a. der Einstellungsdialog), die für mich wichtigen Sachen funktionieren aber erst einmal. Und so sieht das ganze nun aus:

Tabs in Visual Studio 2008

Visual Studio 2008 rockt

By Sven on 15.08.2007 - 08:45 in Visual Studio 2008 with 6 Kommentare

Am Wochenende habe ich die Beta 2 von Visual Studio 2008 installiert. Ich war gespannt, wie sie sich in der Praxis im Vergleich zu Visual Studio 2005 schlägt, und ob die gröbsten Probleme abgestellt sind, die mich bisher von einem Produktiveinsatz abgehalten haben.

Das Kompilieren von CRT und MFC (aufgrund der WinSxS-Hölle sowie eigener Anpassungen) lief zu meiner Überraschung ziemlich problemlos durch. Wenn ich mich recht erinnere, dann ist es wohl das erste Mal, dass alle zum Kompilieren der CRT benötigten Dateien auch vorhanden sind. Beim Öffnen von mit Visual Studio 2005 erstellten Arbeitsbereichen und Projekten führt ein Assistent durch die Konvertierung. Auf Wunsch werden Sicherungsdateien erstellt, denn Visual Studio 2005 kann die konvertierten Projekte nicht mehr öffnen.

Die Projekte von SpeedCommander 12 ließen sich ohne Probleme kompilieren. Die einzige Auffälligkeit waren vier selbst geschriebene Makros für Nachrichtenhandler, die nun bereits in der MFC enthalten sind. Der Compiler bemängelte die doppelte Definition, das Entfernen der eigenen Definition löste das Problem sehr schnell.

Beim ersten längeren Arbeiten mit der IDE bemerkt man eine spürbare Verbesserung der Geschwindigkeit im Vergleich zu 2005. Der Editor reagiert besser auf Eingaben und Einfügeoperationen per Makro, das Aktualisieren der IntelliSense-Datenbank läuft geschmeidig im Hintergrund. Auch das Kompilieren aller Projekte per Batchdatei läuft jetzt schneller ab.

Schon Visual Studio 2005 hat beim Erstellen von Projekten mehrere Prozessoren unterstützt, nicht voneinander abhängige Projekte wurden nebeneinander kompiliert. Ab sofort gibt es zudem noch die Möglichkeit, innerhalb eines Projektes mehrere Dateien gleichzeitig zu kompilieren. Der neue Schalter /MP sorgt dafür, dass entsprechend der Anzahl der vorhandenen Prozessoren mehrere cl.exe-Prozesse gestartet werden. Durch Hinzufügen eines Parameters von 1 bis 65536 lässt sich die automatische Erkennung auch umgehen und die Anzahl der gewünschten Prozesse explizit vorgeben. Vor der Verwendung von /MP muss jedoch die Option /Gm (Incremental Rebuild) deaktiviert werden, beide Optionen sind nicht miteinander kompatibel. Mit /MP werden laut Taskmanager beide Cores zu jeweils 100% ausgelastet, so dass sich ein QuadCore-Prozessor bald lohnen könnte.

Die Integration in Vista ist ebenfalls sehr gelungen. Alle Dateisymbole für die von Visual Studio verwendeten Dateitypen liegen in der Größe von 256×256 Punkten vor, worüber sich das Auge besonders bei Überschreibe- und Löschdialogen freut. Auch die Unterstützung von UAC funktioniert klasse. Für die Erstellung eines UAC-konformen Manifests gibt es den neuen Schalter /MANIFESTUAC, per Einstellungsseite lassen sich alle möglichen Elemente bequem anwählen:

Das mühsame Erstellen und Einbinden eines eigenen Manifests ist damit endlich Geschichte.

Visual Studio 2008 erkennt beim Debuggen ebenfalls, ob eine Anwendung erhöhte Rechte benötigt. In diesem Fall bietet es an, die aktuelle Umgebung zu sichern und sich automatisch mit erhöhten Rechten zu starten und die Debugsitzung durchzuführen:

Der Debugger selbst ist natürlich wieder ein Traum. Völlig überrascht hat mich, dass beim Debuggen einer optimierten Release-Version sämtliche Variablen komplett angezeigt wurden. Vom VC 6 war ich bisher anderes gewöhnt, aber der ist ja nun auch schon etwas älter. Wenn man im Thread-Fenster mit der Maus auf die jeweils ausgeführte Funktion zeigt, dann erscheint ein kleines InfoTip-Fenster mit dem kompletten Aufrufstack des Threads. Ein Doppelklick öffnet die entsprechende Quellcodedatei, man sieht damit sofort, wo der Thread gerade wartet. Möglicherweise war dies im Visual Studio 2005 aber auch schon so, die Win32-Versionen habe ich fast ausschließlich im VC 6 entwickelt.

Das Debuggen auf anderen Systemen läuft dank Remote-Debugger ganz einfach. Auf dem Zielsystem muss lediglich der Remote-Debugger installiert werden, die Installationsdatei befindet sich auf der VS 2008-DVD im Ordner “I:\Remote Debugger\x86”. Anschließend muss der Remote-Debugger nur noch in den Projekteigenschaften unter “Debugging” aktiviert werden. Nach Eingabe des Namens vom entfernten Rechner und der Zieldatei (diese muss vom entfernten Rechner erreichbar sein) kann es schon losgehen. Die Anwendung lässt sich so wunderbar in einer VM debuggen und man muss sein Entwicklungssystem so überhaupt nicht mehr verlassen.

Nun warte ich sehnsüchtig auf eine neue Version von Visual Assist, in den kommenden Wochen soll eine erste Beta erscheinen. Ohne VA wirken die Quelltexte leider wie grauer Einheitsbrei.

Und was machen die übrigen Punkte, die mich in Visual Studio 2005 gestört haben? Der Projektmappen-Explorer flickert immer noch, aber nicht mehr so stark wie in VS 2005. Der Aufklappstatus der Einträge wird leider immer noch gespeichert. An die etwas größere Fontdarstellung werde ich mich wohl gewöhnen müssen, ebenso an das fehlende WndTabs. Die Probleme mit dem Dialog- und Stringtabelleneditor sind gelöst, nur das einzeilige Eingabefeld stört noch etwas. Zur Not kann man längere Texte aber auch in einem externen Editor schreiben und anschließend in das Eingabefeld kopieren.

Für das leidige ClassWizard-Problem habe ich mir ein kleines Makro geschrieben, das die gröbsten Unannehmlichkeiten beseitigt. Mehr dazu aber in einem späteren Beitrag.

Orcas Beta 1

By Sven on 25.04.2007 - 23:04 in Visual Studio 2008 with 3 Kommentare

Auf den MSDN-Seiten steht nun endlich die Beta 1 vom kommenden Visual Studio zum Download bereit. Die ISO-Datei der Professional-Version ist stolze 5455 MiB groß. Wer sich die Team Suite-Version herunterlädt, bei dem fließen 5959 MiB durch die Leitung. Visual Studio 2005 bringt zzgl. MSDN dagegen “nur” 4355 MiB auf die Waage.

Ob in den zusätzlichen 1100 MiB auch der Quellcode für die eigene Anpassung enthalten ist?

Erster Ausblick auf die MFC 9

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

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.

Top