
Die folgende Tabelle soll einen Überblick über die Hardwareanforderungen und den Leistungsumfang der Entwicklungsumgebungen ermöglichen, mit denen die Beispiele dieses Buches durchgeführt werden können. Ein detaillierter Leistungsvergleich ist nicht beabsichtigt.
Produkt |
MS-C/C++ |
Quick-C |
Borland C++ |
Turbo C++ |
Visual C++ |
mit SDK |
f. W. |
f. W. |
f. W. | ||
Umgebung |
DOS/ |
Windows |
DOS/ |
Windows |
Windows |
Windows |
Windows |
||||
C++-Compiler |
ja |
nein |
ja |
ja |
ja |
Prozessor |
ab 386 |
ab 286 |
ab 286 |
ab 286 |
ab 386 |
RAM min/empf |
4MB/8 MB |
2MB/4MB |
4MB/8MB |
3 MB |
4MB/6MB |
HD min/empf |
18MB/52MB |
7MB/? |
50 MB |
12 MB |
30MB/60MB |
Win-Klassen |
MFC 1.0 |
nein |
OWL |
ja |
MFC 2.0 |
Dialog-Editor |
ja |
ja |
Resource-Workshop |
Resource-Workshop |
App.-Studio |
Image-Editor |
ja |
ja |
" |
" |
" |
Font-Editor |
ja |
nein |
" |
" |
ja |
Hotspot-E |
ja |
nein |
ja |
ja |
ja |
Help-Compiler |
ja |
nein |
von MS |
ja |
ja |
Makro-Assemb. |
nein |
nein |
ja |
ja |
nein |
Anmerkung:
Visual C++ ist in zwei Versionen verfügbar, der Standard- und der Professional-Version. Die Standard-Version löst Quick-C für Windows ab und enthält keinen Optimierungscompiler, keine SDK-Tools und ist in den Debug-Möglichkeiten eingeschränkt. Die Professional-Version ist der Nachfolger von C/C++ 7.0.
Die C-Entwicklungssysteme für WINDOWS-Anwendungen enthalten eine unterschiedliche Zahl weiterer Tools für die fortgeschrittene Programmierung, den Programmtest und zur Optimierung der Anwendungen. Die wichtigsten sollen an dieser Stelle mit ihrem Verwendungszeck genannt werden:
Debugging
Spezielle Programme erlauben es, die Windows-Anwendungen direkt zu testen, indem ihr Ablauf in allen Details verfolgt wird. Es können auch spezielle Situationen oder Anwenderbefehle simuliert werden.
MS-C/C++: CVW.EXE, der CodeView Single Monitor f. Windows
SDK: CVW3.EXE ist CodeView für Windows Ver. 3
MS-C/C++: CVW4.EXE ist CodeView für Windows Ver. 4
MS-C/C++: RCVWCOM.EXE, die MS-DOS-Serial Debug Utility für WINDOWS
MS-C/C++: WDEB386.EXE, die Serial Debug Utility für die systeminterne Ebene
Borland: TDW
Andere Programme testen die Anwendungen indirekt, das heißt, sie unterwerfen sie speziellen Bedingungen. So können sie neben Arbeitsspeicher und Festplattenspeicher dem Programm auch während des Ablaufes Dateihandles dadurch entziehen, daß sie diese Ressourcen für sich selbst reservieren (engl.: allocate).
MS-SDK: STRESS.EXE
Monitorprogramme
Mit dem Programm Dr. Watson von Microsoft (DRWATSON.EXE) lassen sich Windows- und Windows-Anwendungsfehler in Dateien festhalten, damit man auch nach einem Absturz des Systems die Ursachen feststellen kann. Dieses Programm läuft im Hintergrund und überwacht das System. Falls notwendig, kann Dr. Watson so eingestellt werden, daß eine Windows-Anwendung selbst nach einem sogenannten GP-Fehler (Allgemeine Speicherschutzverletzung, engl.: General Protection) weiterläuft.
Bei Borland C++ werden ähnliche Aufgaben vom Programm WINSPECTOR übernommen.
Einige Programme erlauben die simultane Überwachung des Arbeitsspeichers während des Programmablaufs. Sie zeigen Speicheradressen und die Speicherverwendung an. So kann man beispielsweise feststellen, ob Programme bestimmte Ressourcen nach ihrer Verwendung auch wieder korrekt freigeben.
MS-SDK: HEAPWALK.EXE für globalen Speicher von Windows und lokalen Speicher der Anwendungen
Die Nachrichten, die zwischen den Windows-Anwendungen und Windows ausgetauscht werden, können ebenfalls mit verschiedenen Programmen laufend überwacht werden.
SDK: SPY.EXE überwacht Windows-Nachrichten
Borland: WINSIGHT dto.
SDK: DDESPY.EXE überwacht DDE-Nachrichten und -aktivitäten.
Analyse
Zur Analyse des Computersystems, der Hardware und der Software, dienen spezielle Diagnoseprogramme. Sie zeigen an, welcher Prozessor eingebaut ist, wie groß der Arbeitsspeicher und die Festplatte sind, welches Betriebssystem und welcher Maustreiber geladen sind und vieles mehr.
Microsoft: MSD.EXE kann von DOS (optional) und Windows gestartet werden.
Dateien, die Programmcode enthalten, wie beispielsweise Windows-Anwendungen, Dynamische Link-Bibliotheken (DLL) und Font-Dateien, enthalten im sogenannten Kopfteil (engl.: header) Verwaltungsinformationen. Diese können mit speziellen Programmen angezeigt und verändert werden.
MS-C/C++: EXEHDR.EXE
Mit anderen Programmen kann man feststellen, welche Teile einer Windows-Anwendung häufig durchlaufen werden, also die zeitkritischen Komponenten sind. Wenn man diese dann optimiert, so gelangt man zu einer besseren Performance der gesamten Anwendung.
SDK: Profiler
Borland: TPROF/W
Sonstiges
Wenn man Teile des grafischen Windows-Bildschirms vergrößern möchte, um Details zu ermitteln oder sie zu kopieren (<Alt>+<Druck>), so kann man sich sogenannter Zoom-Utilities bedienen. Ihre Anwendungsfläche wirkt wie eine Lupe und muß nur auf die gewünschte Stelle gezogen werden.
SDK: ZOOMIN.EXE
Mit Hilfe eines Font-Editors werden bestehende Font-Dateien verändert oder neue erzeugt. Je nach Art des Programms können bestimmte Typen von Fonts, wie Raster-, Vektor- und TrueType-Fonts, bearbeitet werden.
SDK: FONTEDIT.EXE nur für feste und proportionale Raster-Fonts
Borland: Resource-Workshop
Da Anwendungen für Windows oft aus vielen und manchmal auch großen Dateien bestehen, gibt es Hilfsprogramme zur Komprimierung und Expandierung. So kann man große Anwendungen auf einer noch halbwegs erträglichen Zahl von Disketten ausliefern.
SDK: COMPRESS.EXE und EXPAND.EXE
Alte Anwendungen für Windows müssen nicht bei neuen Windows-Versionen auch neu übersetzt werden. Haben Tests ergeben, daß sie einwandfrei arbeiten, so können sie interne Markierungen erhalten, die Windows mitteilen, daß sie zur aktuellen Version passen.
SDK: MARK.EXE
Die folgende Liste enthält beispielhaft einige Funktionen, die im Buch noch nicht ausführlich erläutert wurden. Für eine vollständige und ausführliche Beschreibung aller Funktionen sehen Sie bitte in der Online-Hilfe oder den Handbüchern nach.
MessageBox
Syntax:
int MessageBox(hWndParent, lpText, lpCaption, wType)
Diese Funktion erzeugt ein Fenster mit einer Titelleiste und einer Meldung. Zusätzlich enthält das Meldungsfeld ein vordefiniertes Symbol und eine oder mehrere Schaltflächen.
Der Parameter hWndParent ist ein Bezug auf das Fenster oder das Dialogfeld, dem das Meldungsfeld gehört. lpText zeigt auf eine Zeichenkette, die die darzustellende Nachricht enthält. Wenn lpCaption NULL ist wird als Titelleiste "Error" bzw. "Fehler" ausgegeben. Ansonsten erscheint der eingegebene Text. Der Parameter wType legt den Aufbau des Meldungsfeldes fest. Es kann sich dabei um eine beliebige Kombination der unten stehenden Werte handelt. Wird mehr als ein Wert verwendet, werden sie durch den bitweisen ODER-Operator ( | ) verknüpft (MB_ICONSTOP | MB_OK).
MB_ABORTRETRYIGNORE Drei Schaltflächen: Abbrechen, Wiederholen, Ignorieren.
MB_APPLMODAL Der Benutzer muß auf die Meldungsbox reagieren, bevor er mit dem Fenster weiterarbeiten kann. Er kann jedoch zu einer anderen Anwendung umschalten. Diese Einstellung ist Standard, wenn weder MB_SYSTEMMODAL noch MB_TASKMODAL angegeben sind.
MB_DEFBUTTON1 Die erste Schaltfläche ist Standard. Beachten Sie, daß die erste Schaltfläche standardmäßig immer ausgewählt ist, wenn nicht MB_DEFBUTTON2 oder MB_DEFBUTTON3 spezifiziert wurde.
MB_DEFBUTTON2 Die zweite Schaltfläche ist ausgewählt.
MB_DEFBUTTON3 Die dritte Schaltfläche ist ausgewählt.
MB_ICONASTERISK Hat die gleiche Bedeutung wie MB_ICONINFORMATION.
MB_ICONEXCLAMATION Ein Ausrufezeichen erscheint im Meldungsfenster.
MB_ICONHAND Hat die gleiche Bedeutung wie MB_ICONSTOP.
MB_ICONINFORMATION Ein kleines i in einem Kreis erscheint im Meldungsfenster.
MB_ICONQUESTION Ein Fragezeichen erscheint im Meldungsfenster.
MB_ICONSTOP Ein Stopzeichen erscheint im Meldungsfenster.
MB_OK Das Meldungsfenster enthält nur die Schaltfläche OK.
MB_OKCANCEL Das Meldungsfenster hat zwei Schaltflächen: OK und Abbrechen.
MB_RETRYCANCEL Das Meldungsfenster hat zwei Schaltflächen: Wiederholen und Abbrechen.
MB_SYSTEMMODAL Der Anwender muß auf dieses Meldungsfenster reagieren. Er kann nicht in eine andere Anwendung umschalten.
MB_TASKMODAL Hat die gleiche Bedeutung wie MB_APPMODAL mit der Ausnahme, daß alle Hauptfenster, die zur aktuellen Task gehören gesperrt sind, wenn hWndParent NULL ist.
MB_YESNO Das Meldungsfeld enthält die beiden Schaltflächen Ja und Nein.
MB_YESNOCANCEL Das Meldungsfeld enthält drei Schaltflächen: Ja, Nein und Abbrechen.
Rückgabewert:
Ist nicht genügend Speicherplatz vorhanden, wird Null zurückgegeben. Im anderen Fall einer der folgenden Werte.
Wert Bedeutung
IDABORT Abbruch-Schaltfläche gedrückt
IDCANCEL Abbruch-Schaltfläche gedrückt
IDIGNORE Ignorieren-Schaltfläche gedrückt
IDNO Nein-Schaltfläche gedrückt
IDOK OK-Schaltfläche gedrückt
IDRETRY Wiederholen-Schaltfläche gedrückt
IDYES Ja-Schaltfläche gedrückt
Wenn das Meldungsfeld eine Abbruch-Schaltfläche hat, wird IDCANCEL zurückgeliefert, falls entweder die Abbruchschaltfläche oder die <Esc>-Taste gedrückt wurde. Hat das Meldungsfeld kein Abbruchschaltfläche, bleibt die <Esc>-Taste wirkungslos.
LoadCursor
Syntax:
Rückgabewert:
Der Rückgabewert ist der Handle (HCURSOR) dieses geladenen Cursors.
Bemerkungen:
Soll ein vordefinierter Cursor verwendet werden, wird hinst auf 0 gesetzt und für pszCursor einer der folgenden Werte benutzt:
IDC_ARROW Standard Pfeil-Cursor ![]()
IDC_ICON Ein Rechteck in einem ![]()
Rechteck
IDC_SIZE Ein Kreuz, das in alle vier ![]()
Himmelsrichtungen zeigt
IDC_SIZENESW Doppelpfeil von oben rechts ![]()
nach unten links
IDC_SIZENS Doppelpfeil von oben nach ![]()
unten
IDC_SIZENWSE Doppelpfeil von oben links ![]()
nach unten rechts
Die Bezeichnung IDC steht für "ID Cursor".
LoadIcon
Syntax:
Rückgabewert:
Der Rückgabewert ist der Handle (HICON) dieses geladenen Symbols.
Bemerkungen:
SetCursor
Syntax:
Rückgabewert:
Der Rückgabewert ist der Handle (HCURSOR) des vorherigen Cursors.
Bemerkungen:
Eine Anwendung, die den Cursor in ihrem Fenster ändern muß, sollte sicherstellen, daß der Cursor für die Fensterklasse auf NULL gesetzt ist (wc.hCursor=NULL). Ist der Cursor der Fensterklasse nicht NULL, wird er standardmäßig bei jeder Bewegung der Maus in die Ursprungsform zurückgesetzt.
WinHelp
Syntax:
Parameter:
hwnd Bestimmt das Fenster, das Hilfe benötigt.
lpszHelpFile Zeiger aud einen String, der den Namen der Hilfedatei und wenn nötig den Pfadnamen enthält.
fuCommand Legt den Typ der angeforderten Hilfe fest (siehe unten).
dwData Bestimmt zusätzliche Werte. Die Bedeutung des Wertes hängt vom Wert des Parameters fuCommand ab (siehe unten).
Rückgabewert:
Der Rückgabewert ist ungleich Null, wenn die Funktion erfoglreich war, anderenfalls Null.
Bemerkungen:
Bevor das Fenster geschlossen wird, das die Hilfe aufgerufen hat, muß das Programm WinHelp nochmals aufrufen, wobei der Parameter fuCommand den Wert HELP_QUIT hat. Wenn eine Anwendung dies unterläßt, wird die Windows-Hilfe nicht beendet. In der Regel sollte dieser Aufruf spätestens auf die Nachricht WM_DESTROY hin erfolgen. Wurden mehrere Hilfedatein geöffnet, müssen sie auch alle wieder explizit geschlossen werden.
Beispiel:
case WM_DESTROY: WinHelp(hwnd, lpszHelpFile, HELP_QUIT, NULL)
Die folgende Tabelle zeigt die möglichen Werte des Parameters fuCommand und die zugehörigen Werte des dwData Parameters:
fuCommand |
dwData |
Bedeutung |
HELP_CONTEXT |
Ein unsigned long Integer, der die Kontextnummer des Themas enthält. |
Zeigt die Hilfe an, die durch die Kontextnummer festgelegt ist. Die Nummern sind im [MAP]-Abschnitt der HPJ-Datei definiert worden. |
HELP_CONTENTS |
Wird ignoriert. Sollte auf 0L gesetzt werden. |
Zeigt das Inhaltsverzeichnis an, so wie es durch die CONTENTS-Option im [OPTIONS]-Abschnitt definiert wurde. |
HELP_SETCONTENTS |
Ein unsigned long Integer, der die Kontextnummer des Themas enthält, das die Anwendung als Inhaltsthema verwenden möchte. |
Legt fest, welches Inhaltsthema angezeigt werden soll, wenn der Benutzer <F1> drückt. |
HELP_CONTEXTPOPUP |
Ein unsigned long Integer, der die Kontextnummer des Themas enthält. |
Zeigt in einem Pop-Up-Fenster ein bestimmtes Hilfethema an, das durch eine Kontextnummer spezifiziert wurde. Die Nummer ist im [MAP]-Abschnitt der HPJ-Datei definiert worden.. |
HELP_KEY |
Ein Zeiger auf eine Zeichenkette, die ein Schlüsselwort für das gewünschte Thema enthält. |
Zeigt das Thema an, das dem Schlüsselwort entspricht. Werden mehrere Themen gefunden, wird die "Suchen" Dialogbox angezeigt. |
HELP_PARTIALKEY |
Ein Zeiger auf eine Zeichenkette, die ein Schlüsselwort für das gewünschte Thema enthält. |
Zeigt das Thema an, das dem Schlüsselwort entspricht. Werden mehrere oder keine Themen gefunden, wird die "Suchen" Dialogbox angezeigt. Soll nur die "Suchen" Dialogbox erscheinen, muß eine leere Zeichenkette übergeben werden. |
HELP_MULTIKEY |
Ein Zeiger auf die MULTIKEYHELP Struktur, wie sie in windows.h definiert ist. Diese Struktur legt die Tabelle der Fußnotenzeichen und Schlüsselwörter fest. |
Zeigt das Thema an, das durch ein Schlüsselwort in der zusätzlichen Schlüsselworttabelle definiert wird. |
HELP_COMMAND |
Ein Zeiger auf eine Zeichenkette, die das auszuführende Makro enthält. |
Führt das Makro aus. |
HELP_SETWINPOS |
Ein Zeiger auf die Struktur HELPWININFO (definiert in windows.h). Diese Struktur bestimmt die Größe und Position des Hilfefensters. |
Zeigt das Hilfefenster gemäß den übergebenen Daten an. |
HELP_FORCEFILE |
Wird ignoriert. Sollte auf 0L gesetzt werden. |
Sorgt dafür, daß WinHelp die richtige Datei anzeigt. Wird die richtige Datei bereits angezeigt, geschieht nichts. Anderenfalls öffnet WinHelp die richtige Datei. |
HELP_HELPONHELP |
Wird ignoriert. Sollte auf 0L gesetzt werden. |
Zeigt das Thema Hilfe benutzen an. |
HELP_QUIT |
Wird ignoriert. Sollte auf 0L gesetzt werden. |
Meldet der Windows-Hilfe, daß sie nicht länger benötigt wird. Wird Hilfe auch von keiner anderen Anwendung momentan verwendet, wird sie geschlossen. |
Die folgende Liste enthält beispielhaft einige Meldungen. Für eine vollständige und ausführliche Beschreibung aller Meldungen sehen Sie bitte in der Online-Hilfe oder den Handbüchern nach.
WM_MOUSEMOVE
Diese Nachricht wird geschickt, wenn der Benutzer die Maus bewegt.
Parameter-Beschreibung:
wParam Enthält einen Wert, der anzeigt, ob bestimmte Tasten gedrückt sind (wParam entspricht der Variablen parameter1 in den ersten Beispielprogrammen des Buches). Es kann sich dabei um eine Kombination der folgenden Werte handeln::
MK_CONTROL <Strg> gedrückt
MK_LBUTTON Linke Maustaste gedrückt
MK_MBUTTON Mittlere Maustaste gedrückt
MK_RBUTTON Rechte Maustaste gedrückt
MK_SHIFT <Umschalt> gedrückt
lParam Enthält den Wert der x- und y-Koordinaten des Cursors (lParam entspricht der Variablen parameter2 in den ersten Beispielprogrammen des Buches). Die x-Koordinate ist das niederwertigere Wort, die y-Koordinate das höherwertige. Die Koordinaten beziehen sich immer auf die obere linke Ecke.
WM_LBUTTONDBLCLK
Diese Nachricht wird geschickt, wenn der Benutzer die linke Maustaste doppelklickt.
Parameter-Beschreibung:
wParam Enthält einen Wert, der anzeigt, ob bestimmte Tasten gedrückt sind (wParam entspricht der Variablen parameter1 in den ersten Beispielprogrammen des Buches). Es kann sich dabei um eine Kombination der folgenden Werte handeln:
MK_CONTROL <Strg> gedrückt
MK_LBUTTON Linke Maustaste gedrückt
MK_MBUTTON Mittlere Maustaste gedrückt
MK_RBUTTON Rechte Maustaste gedrückt
MK_SHIFT <Umschalt> gedrückt
lParam Enthält den Wert der x- und y-Koordinaten des Cursors (lParam entspricht der Variablen parameter2 in den ersten Beispielprogrammen des Buches). Die x-Koordinate ist das niederwertigere Wort, die y-Koordinate das höherwertige. Die Koordinaten beziehen sich immer auf die obere linke Ecke.
Hinweis:
Nur Fenster, deren Fensterklasse den Stil CS_DBLCLKS haben, können Doppelklick-Nachrichten erhalten!
Marcellus Buchheit: Windows Programmierbuch, Sybex Verlag, 1992
Helmut Erlenkötter, Volker Reher: Programmiersprache C, Rowohlt Verlag, 1992
Helmut Erlenkötter, Volker Reher: Betriebssystem Windows 3.1, Rowohlt Verlag, 1992
Charles Petzhold: Programmierung unter Windows, Microsoft Press, 1990
This Web page was created using a Trial Version of HTML Transit 3.0.