Arbeiten mit den Beispiel-Programmen der Kapitel 9 und 10 ========================================================= Die Programme der Kapitel 9 und 10 sind fuer das Arbeiten unter MS-Windows 3.1 bzw. 3.11, MS-Windows 95 und MS-Windows NT vorgesehen. Die zu einem Programm gehoerenden Dateien stehen jeweils in separaten Subdirectories. Die (ueber das Internet verfuegbare) gepackte Datei win_prog.zip wurde mit der Option -r "gezippt", sie sollte also mit der Option -d entpackt werden, um diese Directory-Struktur wieder herzustellen, z. B.: pkunzip win_prog.zip -d . (stellt die urspruengliche Subdirectory-Struktur unterhalb des "Current directory" wieder her). Arbeiten mit der integrierten Entwicklungsumgebung von MS-Visual-C++ 1.5 unter Windows 3.1 bzw. 3.11: ------------------------------------------------------ Empfehlung: Es wird mit der "Visual workbench" unter Windows gearbeitet. Prinzipiell ist es auch moeglich, die Windows-Programme von der DOS- Kommandozeile aus zu erzeugen. Diese Variante ist nicht empfehlenswert und wird hier nicht betrachtet. Mit folgenden Befehlen von der "Visual workbench" kann z. B. das ausfuehrbare Programm zum Quellprogramm dialog1.c (Abschnitt 10.2) erzeugt werden: * Project ---> New ---> Browse, * Directory einstellen, in dem sich der Quellcode befindet (Dateien dialog1.c, dialog1.def, dialog1.rc), * Browse-Dialog-Box schliessen ("--" und "Schliessen"), * in der "New Project"-Dialog-Box wird im Feld "Project Name:" dialog1 eingetragen, * in der Box "Project Type" sollte das Angebot "Windows application (.EXE)" voreingestellt sein (bzw. eingestellt werden) , * "New Project"-Dialog-Box ueber OK verlassen, * in der Edit-Dialog-Box werden nacheinander im "File Name:"-Fenster die Dateien dialog1.c, dialog1.rc und dialog1.def ausgewaehlt und mit dem "Add"-Button in das Feld "Files in Project" uebernommen (mit Doppelklick auf die Dateinamen wird dies auch und schneller erreicht), um die Dateien im "File Name:"-Fenster ueberhaupt sichtbar werden zu lassen, muss in der Box "List Files of Type:" zum Beispiel die Auswahl "All Files (*.*)" getroffen werden, * ueber den Button "Close" wird die Edit-Dialog-Box verlassen, * Project ---> Rebuild All DIALOG1.EXE (schneller mit dem "Button mit den drei abwaerts zeigenden Pfeilen"), und Compiler und Linker erzeugen das ausfuehrbare Programm, * Project ---> Execute DIALOG1.EXE, und in einem Fenster laeuft das Programm DIALOG1.EXE. Das Erzeugen der Parser-Library, die fuer das Loesen der Aufgaben 10.3 und 10.4 benoetigt wird, ist in der README-Datei beschrieben, die zu den Quell-Programmen des Parsers gehoert. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich zu den anderen Files in der Edit-Dialog-Box dem Projekt hinzuzufuegen (um sie im Fenster "File Name" ueberhaupt sichtbar zu machen, muss gegebenenfalls ueber "List Files of Type:" die Auswahl Library (*.lib) getroffen werden). Arbeiten mit der integrierten Entwicklungsumgebung von Turbo-C++ fuer Windows 3.1 bzw. Windows 3.11: ------------------------------------------------------ Beim Arbeiten mit Turbo-C++ unter Windows 3.1 bzw. 3.11 sind folgende Besonderheiten zu beachten: # Compiler und Linker generieren sehr viele Warnungen, z. B.: "Parameter ... is never used", wenn der in der Windows-Programmierung haeufige Fall eintritt, dass eine Fenster-Funktion einen der uebergebenen Paramter nicht benutzt. Da man in der C-Programmierung Warnungen in jedem Fall beachten sollte, wird empfohlen, sich alle Ausschriften durchzulesen, aber die offensichtlich unkritischen Programmstellen nicht zu aendern. # Bei den Compiler-Optionen ist in der Regel das Speicher-Modell "Small" voreingestellt, das nicht zu den mit WINAPI (und damit _far _pascal, vgl. windows.h) definierten WinMain-Funktionen passt. Man kann entweder die WinMain-Funktionen dem Speichermodell "Small" anpassen (PASCAL an Stelle von WINAPI) oder aber (empfohlen!) fuer den Compiler das Speichermodell "Medium" einstellen. Mit folgenden Befehlen aus der Turbo-C++-Entwicklungsumgebung kann z. B. das ausfuehrbare Programm zum Quellprogramm dialog1.c (Abschnitt 10.2) erzeugt werden: * Projekt ---> Projekt oeffnen..., * in der "Projektdatei oeffnen"-Dialog-Box in das Directory wechseln, in dem der Quellcode (Dateien dialog1.c, dialog1.def und dialog1.rc) gespeichert ist, * im Feld "Dateiname" dialog1.prj eintragen, Button OK anklicken, * Projekt ---> Datei einfuegen ..., * in der Dialog-Box "In Projektliste aufnehmen" im Feld "Dateiname" *.* eintragen, Return-Taste druecken, * im Fenster "Dateien" nacheinander dialog1.c, dialog1.def und dialog1.rc auswaehlen und mit Klick auf den "Einfuegen"-Button dem Projekt hinzufuegen (schneller durch Doppelklick auf die Dateinamen), * Button "Komplett" anklicken, * Optionen ---> Projekt aktualisieren ..., * im Fenster "Nach Compilierung" wird (falls nicht bereits eingestellt) das Angebot Linker starten ausgewaehlt, Button OK druecken, * Optionen ---> Compiler ---> Code-Generierung, * im Fenster "Modell" das Memory-Modell "Medium" auswaehlen, Button "OK" anklicken, * Compiler ---> Alle Projekt-Dateien compilieren, und Compiler und Linker erzeugen das ausfuehrbare Programm dialog1.exe, Button "OK" anklicken. Die von Compiler und Linker erzeugten Warnungen duerfen ignoriert werden. Das Programm kann aus der Entwicklungsumgebung gestartet werden: * Start ---> Ausfuehren, und in einem sich automatisch oeffnenden Fenster laeuft das ausfuehrbare Programm. Das Erzeugen der Parser-Library, die fuer das Loesen der Aufgaben 10.3 und 10.4 benoetigt wird, ist in der README-Datei beschrieben, die zu den Quell-Programmen des Parsers gehoert. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich zu den anderen Files in der Dialog-Box "In Projektliste aufnehmen" dem Projekt hinzuzufuegen (um sie im Fenster "Dateien" ueberhaupt sichtbar zu machen, muss gegebenenfalls im Feld "Dateiname" *.lib eingetragen werden). Arbeiten mit der integrierten Entwicklungsumgebung von MS-Visual-C++ 4.0 unter Windows 95 bzw. Windows NT: ------------------------------------------------------ Empfehlung: Es wird mit dem "Developer studio" unter Windows gearbeitet. Prinzipiell ist es auch moeglich, die Windows-Programme von der Kommandozeile des DOS-Fensters aus zu erzeugen. Diese Variante ist nicht empfehlenswert und wird hier nicht betrachtet. Mit folgenden Befehlen im "Developer studio" kann z. B. das ausfuehrbare Programm zum Quellprogramm dialog1.c (Abschnitt 10.2) erzeugt werden: * File ---> New, * in der "New"-Dialog-Box wird "Project Workspace" gewaehlt und mit "OK" bestaetigt, * in der sich oeffnenden "New project workspace"-Dialog-Box wird "Application" eingestellt, * "Browse" anklicken und in der sich oeffnenden "Chose directory"- Dialog-Box das Directory einstellen, UNTER DEM sich der Quellcode in einem Subdirectory mit dem Namen dialog1 befindet (dann werden bei Wahl eines Projektnamens "dialog1" auch alle Projektdateien in diesem Directory erzeugt), * mit "OK" kehrt man in die "New project workspace"-Dialog-Box zurueck, in der man das eingestellte Directory unter "Location" sieht, * im Feld "Name" wird dialog1 eingetragen, die Aktion wird mit "Create" abgeschlossen, * Insert ---> Files into Project..., * in der sich oeffnenden "Insert files into project"-Dialog-Box werden die Dateien dialog1.c und dialog1.rc ausgewaehlt ("Einsammeln" wie im Explorer mit Mausklick bei gedrueckter Strg-Taste) und mit "Add" zum Projekt hinzugefuegt (wenn man nicht die oben gegebenen "Browse"-Empfehlungen beachtet hat, muss man nach den Dateien eventuell ueber die Buttons zum Wechseln des aktuellen Verzeichnisses suchen), * Build ---> Build dialog1.exe, und Compiler und Linker erzeugen das ausfuehrbare Programm, * Build ---> Execute dialog1.exe, und in einem Fenster laeuft das Programm DIALOG1.EXE. Das Erzeugen der Parser-Library, die fuer das Loesen der Aufgaben 10.3 und 10.4 benoetigt wird, ist in der README-Datei beschrieben, die zu den Quell-Programmen des Parsers gehoert. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist noch einmal ueber "Insert ---> Files into Project..." in die "Insert files into project"-Dialog-Box zu wechseln, in der die Library dem Projekt hinzugefuegt wird (um sie zu finden, ist in das entsprechende Verzeichnis zu wechseln (sie steht vermutlich in einem Subdirectory "Debug" oder in einem Subdirectory "Release" unterhalb des Library-Project-Directories), und um sie dort zu sehen, ist die passende Filemaske (*.lib) einzustellen. Arbeiten mit der integrierten Entwicklungsumgebung von MS-Visual-C++ 5.0 unter Windows 95 bzw. Windows NT (deutschsprachige Version): ------------------------------------------------------ Empfehlung: Es wird mit dem "Developer Studio" unter Windows gearbeitet. Prinzipiell ist es auch moeglich, die Windows-Programme von der Kommandozeile des DOS-Fensters aus zu erzeugen. Diese Variante ist nicht empfehlenswert und wird hier nicht betrachtet. Mit folgenden Befehlen im "Developer Studio" kann z. B. das ausfuehrbare Programm zum Quellprogramm dialog1.c (Abschnitt 10.2) erzeugt werden: * Datei ---> Neu..., * in der "Neu"-Dialog-Box wird die "Karteikarte Projekte" in den Vordergrund geholt, im Fenster links wird "Win32 Application" gewaehlt, * Button anklicken, der sich rechts neben der Box mit der Ueberschrift "Pfad:" befindet, in der sich oeffnenden "Verzeichnis waehlen"- Dialog-Box wird das Directory eingestellt, UNTER DEM sich der Quellcode in einem Subdirectory mit dem Namen dialog1 befindet (dann werden bei Wahl eines Projektnamens dialog1 auch alle Projektdateien in diesem Directory erzeugt), * mit "OK" kehrt man in die "Neu"-Dialog-Box zurueck, in der man das eingestellte Directory unter "Pfad:" sieht, * im Feld "Projektname" wird dialog1 eingetragen, die Aktion wird mit "OK" abgeschlossen, * Projekt ---> Dem Projekt hinzufuegen ---> Dateien..., * in der sich oeffnenden "Dateien in Projekt einfuegen"-Dialog-Box werden die Dateien dialog1.c und dialog1.rc ausgewaehlt ("Einsammeln" wie im Explorer mit Mausklick bei gedrueckter Strg-Taste) und mit "OK" zum Projekt hinzugefuegt (wenn man nicht die oben gegebenen Directory-Empfehlung beachtet hat, muss man nach den Dateien eventuell ueber die Buttons zum Wechseln des aktuellen Verzeichnisses suchen), * Erstellen ---> dialog1.exe erstellen (schneller ueber den Button mit den abwaerts gerichteten Pfeilen), und Compiler und Linker erzeugen das ausfuehrbare Programm, * Erstellen ---> Ausfuehren von dialog1.exe, und in einem Fenster laeuft das Programm dialog1.exe. Das Erzeugen der Parser-Library, die fuer das Loesen der Aufgaben 10.3 und 10.4 benoetigt wird, ist in der README-Datei beschrieben, die zu den Quell-Programmen des Parsers gehoert. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist noch einmal ueber " Projekt ---> Dem Projekt hinzufuegen ---> Dateien..." in die "Dateien in Projekt einfuegen"-Dialog-Box zu wechseln, in der die Library dem Projekt hinzugefuegt wird (um sie zu finden, ist in das entsprechende Verzeichnis zu wechseln (sie steht vermutlich in einem Subdirectory "Debug" oder in einem Subdirectory "Release" unterhalb des Library-Project-Directories), und um sie dort zu sehen, ist der passende Dateityp "Bibliotheksdateien (.lib)" einzustellen. Arbeiten mit der integrierten Entwicklungsumgebung von Borland-C++ 5.0 unter Windows 95 bzw. Windows NT: ------------------------------------------------------ Beim Arbeiten mit Borland-C++ 5.0 unter Windows 95 bzw. Windows NT sind folgende Besonderheiten zu beachten: # Compiler und Linker generieren sehr viele Warnungen, z. B.: "Parameter ... is never used", wenn der in der Windows-Programmierung haeufige Fall eintritt, dass eine Fenster-Funktion einen der uebergebenen Paramter nicht benutzt. Da man in der C-Programmierung Warnungen in jedem Fall beachten sollte, wird empfohlen, sich alle Ausschriften durchzulesen, aber die offensichtlich unkritischen Programmstellen nicht zu aendern. # Nachfolgend wird das Erzeugen einer 32-Bit-Anwendung beschrieben. Man kann auch unter Windows 95 und Windows NT die Option "Windows 3.x(16)" waehlen und eine 16-Bit-Anwendung herstellen. Das ist zwar inkonsequent, fuer die kleinen Beispiel-Programme aber ausreichend und spart Speicherplatz, weil die zusaetzlich zum ausfuehrbaren Programm erzeugten Dateien nicht so gross werden. Mit folgenden Befehlen aus der IDE von Borland-C++ 5.0 kann z. B. das ausfuehrbare Programm zum Quellprogramm dialog1.c (Abschnitt 10.2) erzeugt werden (es wird angenommen, dass das Projekt im Directory C:\ctut\win_prog\dialog1 erzeugt werden soll, in dem sich auch die Quellcode-Dateien befinden): * Datei ---> Neu ---> Projekt..., es oeffnet sich die "Neues Ziel"-Dialog-Box, * im Feld "Projektverzeichnis und -name:" wird C:\ctut\win_prog\dialog1\dialog1.ide eingetragen, im Feld "Zielname:" erscheint automatisch dialog1, * in der Box "Zieltyp:" wird "Anwendung (.exe)" gewaehlt, * im Feld "Umgebung:" wird "Win32" gewaehlt, im Feld "Zielmodell:" erscheint automatisch "GUI", * der Button "Weitere" wird angeklickt, es oeffnet sich die Dialog-Box "Weitere Optionen", * unter "Anfangsknoten:" wird ".c Knoten" gewaehlt (.RC und .DEF sollten ebenfalls ausgewaehlt sein, fuer die ersten Programme des Kapitels 9, zu denen keine Ressourcen-Datei gehoert, sollte .RC deaktiviert werden), mit "OK" wird die "Weitere Optionen"- Dialog-Box geschlossen, * mit "OK" wird die "Neues Ziel"-Dialog-Box geschlossen, im Fenster "Projekt: ..." sieht man dialog.exe und die Dateien, von denen dialog1.exe abhaengig ist, * Projekt ---> Projekt aktualisieren, und Compiler und Linker erzeugen das ausfuehrbare Programm dialog1.exe, * im Fenster "Erzeugen dialog1" Button "OK" anklicken, Die von Compiler und Linker erzeugten Warnungen duerfen ignoriert werden. Das Programm kann aus der Entwicklungsumgebung gestartet werden: * Debug ---> Ausfuehren, und in einem sich automatisch oeffnenden Fenster laeuft das ausfuehrbare Programm. Das Erzeugen der Parser-Library, die fuer das Loesen der Aufgaben 10.3 und 10.4 benoetigt wird, ist in der README-Datei beschrieben, die zu den Quell-Programmen des Parsers gehoert. Wenn in einem Projekt Objektmoduln aus einer Library verwendet werden sollen, ist diese zusaetzlich in das Projekt aufzunehmen: Im "Projekt:"-Fenster wird mit der rechten Maustaste auf die .exe-Datei geklickt, im lokalen Menue wird "Knoten hinzufuegen" gewaehlt, im Fenster "In Projektliste aufnehmen" muss im Feld Dateityp "Bibliotheken (*.lib)" eingestellt werden, um die Libraries ueberhaupt sichtbar zu machen, gegebenenfalls muss noch in das Directory gewechselt werden, in dem sich die Library befindet. Mit Doppelklick auf den Library-Namen wird diese in das Projekt eingefuegt.