Computer & Technik
Betriebssysteme
Windows
Aufbau eines Windows Programms
Doch zunächst zu den Ressourcen. Bevor wir diese genauer auseinanderpflücken, eine kurze Begriffsbestimmung.
ICON
Jede WINDOWS-Applikation sollte zumindest einen ICON haben, der vom Programm-Manager zur Anzeige verwendet werden kann. Wie dieser ICON definiert wird, sehen wir später. An dieser Stelle genügt es festzuhalten, daß der Programm-ICON vorhanden sein sollte. Ist er es nicht, verwendet WINDOWS den Default-ICON: ein schwarz umrandetes Rechteck mit weißem Hintergrund.
Erzeugt wird der ICON zunächst mit dem ICON-Editor des Whitewater Resource Toolkits (WRT). Abgespeichert wird die Definition in einem binären Format, das von normalen Texteditoren nicht gelesen werden kann.
CUROSR
Benötigt eine Applikation keinen besonderen Cursor, kann der Default-Cursor verwendet. Dies ist der bekannte Pfeil mit Spitze nach links oben. Sollen spezielle Effekte erzielt werden, kann mit dem WRT eine ebenfalls binär abgelegte Cursor-Definition erzeugt werden.
BITMAP
Bitmaps sind rechteckige Grafiken, die hardwareunabhängig abgespeichert sind und von WINDOWS besonders schnell angezeigt werden können. Sie werden nur benötigt, wenn fest vorgegebene Grafiken beispielsweise als Logo angezeigt werden sollen. Bei Bedarf können Sie mit dem WRT erzeugt werden.
Dialoge
Dem Definieren von Dialogen kommt unter WINDOWS eine besondere Bedeutung zu. Nicht zuletzt, weil sich fast alles um Dialoge dreht. WINDOWS-Applikationen verbringen (i.d.R.) die meiste Zeit damit, auf Ereignisse zu warten. Die meisten Programmzustände und Aufgaben werden in Dialogen erfragt. Damit Programme leichter wartbar sind, können sie mit dem WRT graphisch erzeugt und in einer speziellen Textdatei abgelegt werden. Die Dialog-Definitionen sind reiner ASCII-Text, der beliebig editiert werden kann, ja in der Regel sogar editiert werden muß, weil bei der graphischen Definition doch immer wieder kleine Ungenauigkeiten auftreten, die per Hand beseitigt werden müssen.
Menüs und Textkonstanten
Auch Menüs werden im Klartext definiert. Zusammen mit den Dialog-Definitionen werden sie in einer sogenannten Resourcen-Datei zusammengefaßt. In dieser Textdatei werden alle Definitionen erfaßt, was auch bedeuten kann, daß sie per #include (man beachte die C-Schreibweise!) aufgenommen werden. Auch für die binären Definitionen müssen jetzt Bezüge hergestellt werden, da der Resource-Compiler alle Elemente mit einer Nummer versieht, über die sie später von WINDOWS erkannt und geladen werden.
Compilieren der Resourcen
Die Resourcen-Datei, die standardmäßig die Extension '.RC' hat, muß per Hand compiliert werden. Dies erfolgt über den Aufruf
RC -r Dateiname[.RC]
Wichtig ist der Parameter -r, denn RC kennt zwei Betriebsmodi:
- Compilieren der Resourcen
- Linken der Resourcen in die fertige EXE-Datei
Einbinden der Resourcen
Der Resourcen-Compiler erzeugt eine Datei mit der Extension '.RES', die später von TPWin automatisch dazugelinkt wird, sofern der entsprechende Schalter im Source des Hauptprogramms gesetzt ist. Als Compiler-Directive dient der Buchstabe 'R'.
Die Zeile
{$R ASCII };
veranlaßt TPWin die Ressourcen in die EXE-Datei einzufügen. Die Namen von ausführbarer Datei und Ressourcen-Datei müssen nicht notwendigerweise übereinstimmen. Vielmehr ist es möglich, im Laufe der Zeit eine regelrechte Ressourcen-Bibliothek aufzubauen, in der für alle Standard-Probleme Dialog-, Menü- oder Definitions-Strukturen vorhanden sind.
Die Ressourcen können fast unabhängig vom eigentlichen Programm editiert und erzeugt werden. Allerdings nicht ganz. Da WINDOWS die Ressourcen anhand einer Nummer erkennt, müssen die Nummern im Programm und in den Ressourcen übereinstimmen. Unter 'C' ist dies kein Problem, denn eine Include-Datei mit den notwendigen Konstanten kann sowohl in das Programm, als auch in die Ressourcen eingebunden werden. Dummerweise funktioniert dies mit TPWin nicht so elegant, denn das WRT ist auf 'C' ausgelegt, während TPWin wiederum keine 'C'-defines mag. Auf Konstanten sollte man aber dennoch nicht verzichten und diese eben einmal für WRT und einmal für TPWin definieren.
Denkbar wäre, ein kurzes Turbo-Pascal-Programm zu schreiben, das aus einer 'C'-Header-Datei eine Pascal-Include-Datei erzeugt. Dazu wäre lediglich ein "dummer" Parser erforderlich, der alle Sequenzen "#define " in "CONST " umsetzt.
Faßt man alle Einzelschritte zu zwei große Bereiche zusammen, verbleiben als Aufgaben:
1. Erzeugen der Resourcen
2. Schreiben und Compilieren der Applikation