www.codeworx.org/c++ tuts /Kongos rand() Tutorials, 8: Schneller programmieren durch Add-Ins und Makros in MS Visual C++ 6


Tutorial 8: Schneller programmieren durch Add-Ins und Makros in MS Visual C++ 6

Wie fessle ich die Hände an die Tastatur?

Einleitung

Denkt einmal darüber nach. Ihr sitzt vor eurem Computer und programmiert vor euch hin. Wie oft wechselt eure rechte Hand von der Tastatur zur Maus und wieder zurück? Sehr oft, oder?!? Störend kann die Benutzung der Maus vor allem auf einem Notebook sein, wo man ein Touchpad hat um den Mauszeiger zu bewegen. Das artet dann in Geduldsübungen aus, obwohl man ja eh nur eine Datei öffnen will, oder das Kompilieren starten möchte. Also warum lässt man die Hände nicht gleich (fast) die ganze Zeit auf der Tastatur und spart gleich noch Unmengen an Zeit? Es geht nicht ohne Maus? Aber na sicher.

Mit Hilfe von Shortcuts, Makros und Add-Ins kann man seine IDE (Entwicklungsumgebung) so verändern, dass man die Maus fast überhaupt nicht mehr verwenden muss. Dieser Artikel ist also vor allem für die geschrieben, die immer noch sehr viel die Maus benutzen. Ich hoffe aber das der Artikel auch für andere lehrreich ist.

Shortcuts

Also ich glaub jeder von euch verwendet Shortcuts in VC++. Also zum Beispiel F7 (und Strg+F7) um das Programm zu kompilieren oder Alt+F und F3 um in der gerade geöffneten Datei zu suchen. Aber das meistgenützte Shortcut wird wohl Strg+S. Also wer das nicht verwendet, ist nicht von dem Planeten.

Um Shortcuts zu ändern gehe man unter Extras->Anpassen... Im Reiter Tastatur kann man jeden Befehl der IDE mit einem Shortcut verbinden. Ich habe als Beispiel auf F6 und Shift+F6 den Befehl WindowNext/WindowPrevious gelegt (Kategorie Fenster). Damit wechsle ich zwischen den geöffneten Fenstern einfach herum ohne die Maus benutzen zu müssen. Sehr hilfreich wenn man im Vollbildschirmmodus (Menü: Ansicht->Ganzer Bildschirm Shortcut: Alt+A+G) ist.

Wichtigste Shortcuts

Strg+S - Speichern Strg+F - Suchen
F3 - Weitersuchen Strg+H - Ersetzen
Alt+A+G - Ganzer Bildschirm Strg+F7 - Datei kompilieren
F7 - Programm erstellen F6 - Nächstes Fenster (Befehl: WindowPrev)
Shift+F6 - Voriges Fenster (Befehl: Window Previous) Alt+F7 - Projekteinstellungen
F5 - Programm kompilieren und ausführen F9 - Breakpoint setzen/löschen
F12 - Gehe zu Definition F10 - Aufruf als ein Schritt
Strg+F10 - Ausführen bis Cursor F11 - In Aufruf springen
Shift+F11 - Ausführen bis Rücksprung

 

Makros

Die Makros von VC++ sind sogenannte VBScript-Makros. Dabei handelt es sich um Prozeduren die in einer Textdatei geschrieben und einfach in VC++ integriert werden können. Makros sind nur für kleine Arbeiten gedacht, um zum Beispiel eine bestimmte Datei zu öffnen, einen Text zu suchen, Formatierungen in der gerade geöffnenten Datei durchzuführen usw... Mehr  Informationen über die Sprache VBScript findest du in der MSDN-Help unter Visual C++-Dokumentation -> Arbeiten mit Visual C++ -> Visual C++-Benutzerhandbuch -> Automatisierung von Aufgaben in Visual C++ -> Makros.

Die Makrodateien findest du unter Visual Studio 6 im Verzeichnis VisualStudio\Common\MSDev98\Macros. VC++ liefert auch gleich Beispielmakros mit (Datei: sample.dsm). Hier nun ein Beispielmakro:

Sub OpenHeaderSource    ()
     ext = ActiveDocument.FullName
     pos = Instr(ext, ".")
     pos2 = 0
   
     if pos > 0    then
       Do While    pos <> 1
         ext = Mid(ext, pos,    Len(ext) - pos + 1)
         pos2 = pos
         pos = Instr(ext,    ".")
       Loop
       ext = LCase(ext)
     end if
   
     docname = ActiveDocument.FullName
     newdoc = Mid(docname,     1, pos2-1)
   
     if ext = ".cpp"    then
       newdoc = newdoc + ".h"
     ElseIf ext = ".h" then
       newdoc = newdoc + ".cpp"
     End If
   
     Documents.Open(newdoc)
   End Sub

Diese Makro öffnet von einer Datei die zugehörige Header oder Quelldatei. Ist as aktive Dokument also zum Beispiel kernel.cpp öffnet dieser Makro die Datei kernel.h. Diesen Code in eine Markodatei einfügen, mit einem Shortcut verbinden und schon wechselt man blitzschnell zwischen den Dateien herum.

Um ein Makro mit einem Shortcut zu verbinden, muss man als erstes die Makrodatei laden. Dies geschieht unter Extras->Anpassen... -> Add-Ins und Makrodateien. Hier listet VC++ alle Add-Ins und Makrodateien auf, die in den zugehörigen Ordnern zu finden sind. Einfach vor die Datei mit dem Marko das Häkchen setzen und schon lädt VC++ dieses Add-In/Makro. Dann kann man unter dem Reiter Tastatur in der Kategorie Makros das Makro auswählen und mit einem Shortcut verbinden.

Ein anderes Makro, das ich auch verwende, macht aus einer Funktionsdeklaration die zugehörige Beschreibung. (Makro von Doxygen: AddHead4Doxygen)

Vor der Deklaration

bool engConsoleRegisterCommand(engString sCmd, engString sParam, engString sHelp)

Fügt diese Makro folgenden Text ein:

/*!
 * @brief 
 * 
 *
 * @param sCmd : 
 * @param sParam : 
 * @param sHelp : 
 *
 * @return bool : 
 */ 

Und markiert auch noch den Text "brief", wo ich dann sofort die Beschreibung der Funktion hinschreiben kann. Man sieht, Makros können einiges an Schreibarbeit einsparen.

Add-Ins

Add-Ins sind prozessintegrierte ActiveX-Komponenten (DLLs), die in VC++ oder VB geschrieben sind. Makros sind zwar einfach zu programmieren aber nicht so vielseitig wie Add-Ins. Mit Makros kann man nur auf wenige Ressourcen des Programms zugreifen, wobei man mit Add-Ins eigentlich ein ganzes Programm schreiben kann, dass auf den Computer zugreifen kann.

VBScript-Makros Developer Studio Add-Ins
Werden interpretiert. Werden kompiliert.
Sind leicht zu erstellen. Sind schwieriger zu erstellen.
Können nur in VBScript geschrieben werden. Können in verschiedenen Sprachen geschrieben werden.
Können nur Dialogfelder verwenden, die mit den VBScript-Befehlen InputBox und MsgBox erstellt wurden. Können beliebige modale Dialogfelder verwenden.
Können nicht auf die Win32-Api zugreifen. Können auf die Win32-Api zugreifen.
Können nicht direkt Dateien auf der Festplatte lesen oder in diese schreiben. Können über die Win32-Api direkt Dateien auf der Festplatte lesen und diese schreiben.
Können keine anderen Anwendungen steuern. Können eine andere Anwendung steuern.
aus der MSDN Library "Unterschiede zwischen VBScript-Makros und Developer Studio-Add-Ins

Add-Ins für den Programmierer

Hier nun eine Beschreibung der Add-Ins die ich selbst verwende.

LibraryBrowser von David Fergusson - Freeware

Ein Browser mit Suchfunktionen. Man kann Packages anlegen aus denen der Library Browser die Funktions- und Klassendeklarationen herausfiltert und anzeigt. Dient dazu schnell zu einer Funktion von einer Klasse zu wechseln oder einfach nur um alle Klassen, Typen, Funktionen, Variablen,.. aufzulisten.

SmartReplace AddIn - Freeware mit Quellcode

Ein Ersatz für den Ersetzen-Dialog von VC++. Damit kann man nicht nur in der gerade geöffneten Datei Wörter ersetzen, sondern auch in den gesamten Projektdateien, Arbeitsbereichdateien oder Dateien in einem bestimmten Verzeichnis.

Visual Assist 6.0 von www.wholetomato.com

Mein Geheimtipp unter den Add-Ins. Mit diesem Tool, erspart man sich viel unnötigen Ärger und Arbeit (mit der Maus). Diese Add-In führt ein zusätzliches Syntax-Highlighting ein. Dadurch kann man Klassen, Variablen, Makros, Methoden mit eigenen Farben belegen. Weiters überprüft es die Groß/Kleinschreibung und bessert Fehler automatisch aus. Bessere Textvervollständigung als VC++. Es versteht sogar den Unterschiede zwischen Klassenzeiger und Klassenvariable. Schreibt man zB. PointeraufKlasse.Funktion(); so bessert das Add-In den Punkt automatisch in den C++ Pfeil -> aus. Es besitzt auch noch Suchfunktionen um den Text der gerade beim Cursor steht zu Suchen.

Verbindet man dies alles mit Shortcuts, braucht man wirklich keine Maus mehr. Ich arbeite fast nur mehr im Vollbildschirmmodus (also nur die Dateisicht) und mache alles mit Shortcuts. Ich verliere dadurch keine Funktionalität, die ich im normalen Modus hätte. Möchte ich zum Beispiel irgendeine Datei des Projekts öffnen (während ich im Vollbildschirmmodus bin), drücke ich nur Strg+F6 und schon kommt ein Dialog des Visual Assist Add-In indem alle Dateien aufgelistet sind und ich kann bequem per Tastatur die Datei auswählen.

Total Commander

Dies ist kein Add-In sondern ein Dateibrowser wie der Explorer. Jedoch ist es auch ein Tool, das man am besten nur mit der Tastatur bedient. Sehr geeignet für Notebooks um die Verwendung des Touchpad so klein wie möglich zu halten. Aber auch für daheim das ideale Tool. Man ist einfach mit Shortcuts schneller als mit der Maus. Zusätzlich zu den Browserfunktionen, kann der Total Commander ganze Verzeichnisse abgleichen, FTP, Packen, ... Also einfach ein Tool das sich für Shortcutler wirklich eignet.

Falls ihr auch Makros oder Add-Ins verwendet, die ich hier auch unterbringen sollte, schreibt mir. Ich freue mich auf jedes Makro das mir die Arbeit erleichtert.

Copyright (c) by KongoBei Fragen, Beschwerden, Wünschen schreib an kongo@gmx.at