Acceleratoren in Dialogen für Felder ohne Prompt bzw. Static Control

Mit Alt+Buchstabe ein Feld in einem Dialog anspringen ist der Tastaturliebhaber gewöhnt.
Aber was mach man wenn man keinen Platz für ein Static Control hat vor dem entsprechenden Eingabefeld. Oder wenn solch ein Static gar nicht in das Design passt, oder gar eine Grafik enthalten soll.

Man könnte PreTanslateMessage überschreiben und mit Hooks Klimmzüge veranstalten. Aber es geht weitaus einfacher.

Man kann das Static Control an die korrekte Stelle in der Z-Order platzieren und dann einfach auf „Invisible“ setzen. Der Accelerator funktioniert trotzdem.
Nur Statics, die disabled sind werden als Acceleratoren ignoriert. Das Acceleratoren auch für nicht sichtbare Controls funktionieren habe ich bereits in diesem Artikel Button + Accelerator + ShowWindow(SW_HIDE) – EnableWindow(FALSE) = Falle erwähnt.

Anmerkung:
Damit ein User weiß das Acceleratoren für dieses Feld funktionieren sollte ein sichtbarer Hinweis im Handbuch existieren. Da aber wenige Menschen überhaupt Handücher verwenden :mrgreen: eignen sich hier Tooltips für den entsprechenden Hinweis.  Etwa so wie das VisualStudio macht mit Show shortcut keys in ScreenTips

VS Tipps & Tricks: Goto Dialog im Class View

Eventuell ist dies auch gar kein Tipp für Euch, weil Ihr diese Funktion schon läääängst kennt. In diesem Fall ist dieser Artikel die Erkenntnis, dass ich (selbst nach Jahren intensiver Arbeit) immer wieder Funktionen entdecke, die ich gerne früher gekannt hätte ;). In diesem Fall habe ich ihn erst Anfang dieser Woche entdeckt.

Es ist eine Funktion, die nur MFC/ATL Entwickler nutzen können (oder Ihrer bedürfen):

  • Man hat ein MFC Projekt
  • Wähle im Classview eine von CDialog abgeleitete Klasse
  • Dann öffnet man das Kontextmenü
  • und findet den Befehl Goto Dialog

Führt man diesen Befehl aus, öffnet sich der Ressourcen-Editor mit dem entsprechenden Dialog.

Schön, dass es diese Funktion gibt, denn IDD_’s heißen oft genug so anders als die Klassen, dass es bei manchen großen Projekten immer erst eines Blickes in die Header Datei bedarf um den richtigen Dialog zu finden.

Wunderbar! Hätte ich diesen Befehl zuvor gekannt, dann hätte In den letzten Jahren bestimmt 10 Minuten Zeit sparen können, in denen ich verzweifelt Dialoge in den Ressourcen suche… 😉

VS-Tipps & Tricks: Die Combobox im Property Fenster des Dialog Editors

Unscheinbar aber sehr effektiv zum Ändern von großen Dialogen ist die Combobox im Eigenschaftsfenster.
In den meisten Fällen steht in dieser Combobox nur der Name des Objektes, das ausgewählt ist und eine weitere Auswahl ist dann oft hier nicht möglich.

Editiert man jedoch einen Dialog, dann kann man mit dieser Combobox, sehr effektiv und schnell Controls gezielt auswählen. Besonders wenn man Controls übereinander legt weil diese ein oder ausgeblendet werden wird es schwierig diese Controls gezielt mit der Maus zu markieren.
Mit der Combobox kein Problem.
Die Reihenfolge in der Combobox ist die alphabetisch sortiert nach den Namen der Control IDs. Auch das erleichtert die Auswahl, wenn man ein Control direkt anhand seiner ID finden will. Hat man den Dialog nicht designed und will ein Control identifizieren, dass durch einen bestimmten Code gesteuert wird, ist das mit dieser Combobox ein Klax.

Auch wenn man die Maus nicht verwenden will kann man mit dieser Combobox schnell navigieren:
Alt+Eingabetaste, wählt das Eigenschaftsfenster, mit 3 x Tab oder 2 x Umschalt+Tab kommt man in die Combobox, die man dann mit den Cursor-Tasten, bzw. Alt+Pfeilrunter bedienen kann. Mit der Escape-Taste kommt man zurück in die Editoroberfläche.