API-Funktion MessageBox(...)

Durch den Aufruf der Funktion MessageBox(...) wird eine Messagebox dargestellt. Eine Anwendung benutzt eine Messagebox in der Regel zur Ausgabe von kurzen Hinweisen und Fehlermeldung.

MessageBox(....) hat folgendes Prototyping:

int MessageBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

Die Parameter haben folgende Bedeutung:

Parameter

Bedeutung

HWND hWnd Fenster-Handle des Fensters, dem die Messagebox untergeordnet ist. Wird für diesen Parameter der Wert NULL angegeben, so ist die Messagebox keinem Fenster untergeordnet.
LPCTSTR lpText Zeiger auf den in der Messagebox auszugebenden Text.
LPCTSTR lpCaption Zeiger auf den Fenstertitel der Messagebox. Wird hier der Wert NULL angegeben, so erhält die Messagebox den Standardtitel 'Fehler'.
UINT uType Eine Kombination von Flags die das Aussehen und das Verhalten der Messagebox kontrollieren. Mehr dazu weiter unten.

Der Parameter hWnd spezifiziert das der Messagebox übergeordnete Fenster. Wird dieses Fenster zum Symbol verkleinert oder geschlossen, so wird die Messagebox ebenfalls verborgen bzw. geschlossen.

Die beiden nächsten Parameter lpText und lpCaption haben einen zunächst etwas seltsam erscheinenden Datentyp LPCTSTR. LPCTSTR steht für long pointer constant wchar_t string. Die Ungarische Notation lässt grüßen! wchar_t ist ein C++ Basis-Datentyp der zur Darstellung von Zeichensätzen dient. wchar_t besitzt die gleichen Eigenschaften wie der Datentyp int. Er kann Zeichensätze aufnehmen die für die Darstellung eines Zeichens mehr als 8 Bit benötigen (wie z.B. der chinesische Zeichensatz). Um Strings mit diesem Datentyp zu definieren wird vor dem String der Präfix 'L' gestellt. Tun Sie dies nicht, so wird durch den Compiler eine automatische Typkonvertierung vorgenommen. Beispiel:  L"wchar_t String".

Am interessantesten ist der letzte Parameter uType. Er steuert das Aussehen und Verhalten der Messagebox. Der Parameter uType kann prinzipiell in drei Funktionsgruppen aufgeteilt werden: Werte für das darzustellende Symbol in der Messagebox, Werte für die anzuzeigenden Buttons und Werte für das Verhalten der Messagebox. Alle Werte werden durch IDs bestimmt die in den nachfolgenden Tabellen aufgeführt sind. Aus der ersten und zweiten Gruppe (Symbole und Buttons) darf jeweils nur eine ID angegeben werden während aus der dritten Gruppe (Messagebox-Verhalten) mehrere IDs angegeben werden können (die aber selbstverständlich eine sinnvolle Kombination ergeben müssen).

Beginnen wir mit den Bezeichnungen für das in der Messagebox darzustellende Icon:

ID

Symbol

MB_ICONEXCLAMATION,
MB_ICONWARNING
MB_ICONINFORMATION,
MB_ICONASTERISK
MB_ICONQUESTION
MB_ICONSTOP,
MB_ICONERROR,
MB_ICONHAND

Die nächste Gruppe steuert die darzustellenden Buttons. Innerhalb einer Messagebox sind nur bestimmte Kombinationen von Buttons zulässig die über folgende IDs eingestellt werden:

ID

Buttons

MB_ABORTRETRYIGNORE
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
MB_CANCELRETRYCONTINUE
(nur WINDOWS2000)

hinweis.gif (2251 Byte) Wollen Sie andere Buttons oder Buttonkombinationen, so müssen Sie dafür einen eigenen Dialog entwerfen.

Die letzte Gruppe im Parameter uType steuert das grundsätzliche Verhalten der Messagebox. Und damit die ganze Sache doch nicht zu einfach wird, kann diese Gruppe nochmals unterteilt werden. Zuerst können Sie über eine der folgenden IDs den Default-Button bestimmen. Der Default-Button wird immer dann aktiviert, wenn zum Schließen der Messagebox einfach die RETURN-Taste gedrückt wird.

ID

Bedeutung

MB_DEFBUTTON1 Der erste Button ist der Default-Button. Dies ist die Standardeinstellung wenn nichts anderes spezifiziert wird.
MB_DEFBUTTON2 Der zweite Button ist der Default-Button.
MB_DEFBUTTON3 Der dritte Button ist der Default-Button.
MB_DEFBUTTON4 Der vierte Button ist der Default-Button.

Doch halt! Laut obiger Tabelle kann auch der vierte Button als Default-Button definiert werden. Wenn Sie sich nun aber einmal oben die möglichen Button-Kombinationen ansehen werden Sie keinen vierten Button darin finden. Aber warten Sie noch ein klein wenig, dann werden wir den vierten Button zum Vorschein bringen.

Als nächste Untergruppe folgt die Einstellung der Modalität (welch ein Wort!). Die Modalität spezifiziert welche Aktionen der Anwender noch durchführen kann während die Messagebox angezeigt wird. Folgende Möglichkeiten bestehen hier:

ID

Bedeutung

MB_APPLMODAL Die Messagebox muss geschlossen werden bevor weitere Aktionen im zugehörigen Fenster (Parameter hWnd der Messagebox) möglich sind. Dies ist die Default-Einstellung. Aktionen in anderen Anwendungen sind aber möglich.
MB_SYSTEMMODAL Wie MB_APPLMODAL, nur dass die Messagebox stets als oberstes Fenster angezeigt wird.
MB_TASKMODAL Wie MB_APPLMODAL, nur dass jetzt alle Hauptfenster der Anwendungen gesperrt sind wenn für den Parameter hWnd der Wert 'NULL' angegeben wird.

Die letzte Untergruppe enthält noch die Flags, die sich sonst in keiner Gruppe unterbringen lassen. Die nachfolgende Aufstellung ist nicht vollständig. So gibt es u.a. noch Flags die das Verhalten der Messagebox beim Betrieb vom mehreren Monitoren steuern. Sehen Sie für eine vollständige Aufzählung der Flags in der Online-Hilfe nach.

ID

Bedeutung

MB_HELP Die Messagebox erhält zusätzlich einen Hilfe-Button. Und dies ist der noch fehlende vierte Button von vorhin. Die Auswahl des Help-Buttons (oder drücken der <F1> Taste) erzeugt eine Help-Nachricht.
MB_RIGHT Der Text der Messagebox wird rechts ausgerichtet. Default-Einstellung ist links-ausgerichteter Text.
MB_SETFOREGROUND Die Messagebox wird immer als oberstes Fenster dargestellt.

Damit haben wir uns (fast) alle Möglichkeiten der Messagebox angesehen und kommen nun zum Returnwert der MessageBox(...) Funktion. Wie Sie dem Prototyping entnehmen können liefert die Funktion einen int-Wert zurück. Und dieser int-Wert gibt an mit welchem Button die Messagebox geschlossen wurde. Die nachfolgende Tabelle enthält eine Auflistung aller möglichen Returnwerte sowie die dazugehörigen Buttons. Beachten Sie bitte den Wert für den Button Abbrechen in der ersten Zeile der Tabelle. Der Button liefert hier den Wert 'IDABORT' zurück während alle anderen Abbrechen Buttons den Wert 'IDCANCEL' liefern. Der Wert 'IDCANCEL' wird übrigens auch dann zurückgeliefert, wenn der Anwender die Messagebox durch Drücken der <ESC> Taste schließt!

Returnwerte

Buttons

IDABORT, IDRETRY, IDIGNORE
IDOK
IDOK, IDCANCEL
IDRETRY, IDCANCEL
IDYES, IDNO
IDYES, IDNO, IDCANCEL
IDCANCEL,IDRETRY,IDCONTINUE
(nur WINDOWS2000)

Zum Schluss noch ein Hinweis: Werden die beiden Flags MB_ICONHAND und MB_SYSTEMMODAL gesetzt, so wird die Messagebox immer angezeigt, unabhängig vom noch verfügbaren Speicher. Die Länge des Textes ist dann aber auf 3 Zeilen begrenzt. Sie müssen allerdings die Zeilenumbrüche durch '\n' selbst definieren.



Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470