Code-Beispiel
MessageBox
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | csde_rats | 30.08.2011 |
Windows-Benutzer kennen sie, überall tauchen sie auf: Es ist die Rede von den sogenannten Message-Boxen. Diese kleinen Informationsfelder kann man auch in FreeBasic aufrufen.
Mit dem folgenden Code kann man (zumindest unter Windows) eine Messagebox erzeugen:
#include "windows.bi"
MessageBox(0, "Zeile 1" & chr(13, 10) & "Zeile 2", "Titel", Optionen)
Wie geht das nun?
- Der erste Parameter ist unter FreeBasic nicht von großer Bedeutung. (Das ist der sog. "Parent Window"-Handle. Damit kann man Windows mitteilen, welchem Fenster die MessageBox "gehört".)
- Der zweite Parameter ist der anzuzeigende Text. Einen Zeilenumbruch kann man mit Chr(13, 10) erzwingen.
- Der dritte Parameter stellt den Titel des Fensters dar.
- Optionen besteht aus verschiedenen Parametern (sog. Flags), die mit dem Operator OR kombiniert werden können.
Es folgt eine Beschreibung der Optionen (für weitere Details siehe MSDN-Artikel zum Thema):
Ein Flag regelt das anzuzeigende Icon. Wird keines der Flags übermittelt, erscheint auch kein Icon.
Verfügbare Icons:
Flag: | Bedeutung: |
---|---|
MB_ICONINFORMATION | Information |
MB_ICONQUESTION | Frage / Fragezeichen |
MB_ICONEXCLAMATION | Warnung / Ausrufezeichen |
MB_ICONERROR | Fehler / Stop-Symbol |
Es gibt weitere Flags, die aber mit den gleichen Symbolen und Klängen dargestellt werden.
Die zweite Option regelt die anzuzeigenden Buttons. Wird diese Option nicht übermittelt, wird von einem OK-Button ausgegangen.
Die wichtigsten (Button-)Flags:
Flag: | Bedeutung: |
---|---|
MB_OK | Ok-Button |
MB_YESNO | Ja / Nein |
MB_ABORTRETRYIGNORE | Abbrechen / Wiederholen / Ignorieren |
MB_OKCANCEL | OK / Abbrechen |
MB_RETRYCANCEL | Wiederholen / Abbrechen |
MB_YESNOCANCEL | Ja / Nein / Abbrechen |
Man kann mit einem Flag auch bestimmen, welcher der Buttons beim Anzeigen der MessageBox standardmäßig angewählt ist, also den Focus hat:
Flag: | Bedeutung: |
---|---|
MB_DEFBUTTON1 | Erster Button angewählt |
MB_DEFBUTTON2 | Zweiter Button angewählt |
MB_DEFBUTTON3 | Dritter Button angewählt |
MB_DEFBUTTON4 | Vierter Button angewählt |
Da es nicht die Möglichkeit gibt, eine MessageBox mit mehr als 4 Buttons zu erstellen, gibt es auch nur diese vier Flags.
Selbstverständlich kann immer nur ein Flag einer bestimmten Gruppe übergeben werden, also nur ein Symbol-Flag, ein Button-Flag sowie ein DefaultButton-Flag.
MessageBox ist eine Funktion; der geklickte Button wird zurückgegeben; Bei MB_YESNO kann dies IDYES (Ja) oder IDNO (Nein) sein. Folglich ist es bei OK IDOK.
Zur Übersicht hier eine Tabelle der Rückgabewerte:
Button: | Konstante: | Wert: | Definition: |
---|---|---|---|
OK | IDOK | 1 | #define IDOK 1 |
Abbrechen | IDCANCEL | 2 | #define IDCANCEL 2 |
Abbrechen | IDABORT | 3 | #define IDABORT 3 |
Wiederholen | IDRETRY | 4 | #define IDRETRY 4 |
Ignorieren | IDIGNORE | 5 | #define IDIGNORE 5 |
Ja | IDYES | 6 | #define IDYES 6 |
Nein | IDNO | 7 | #define IDNO 7 |
Wichtig:
IDCANCEL & IDABORT sind unterschiedliche Buttons, obwohl sie die gleiche Aufschrift haben! (Zumindest in deutschen Windows'en)
Wenn man MB_ABORTRETRYIGNORE gesetzt hat, kommt niemals IDCANCEL als Rückgabewert, sondern bei Klick auf Abbrechen IDABORT.
Übersichtstabelle Icons:
Icon: | Konstante: | Wert: | Definition: |
---|---|---|---|
Information | MB_ICONINFORMATION | 64 | #define MB_ICONINFORMATION 64 |
Frage / Fragezeichen | MB_ICONQUESTION | 32 | #define MB_ICONQUESTION 32 |
Warnung / Ausrufezeichen | MB_ICONEXCLAMATION | &h30 (48) | #define MB_ICONEXCLAMATION &h30 |
Fehler / Stopsymbol | MB_ICONERROR | 16 | #define MB_ICONERROR 16 |
Übersichtstabelle DefButtons:
DefButton: | Konstante: | Wert: | Definition: |
---|---|---|---|
Erster Button | MB_DEFBUTTON1 | 0 | #define MB_DEFBUTTON1 0 |
Zweiter Button | MB_DEFBUTTON2 | 256 | #define MB_DEFBUTTON2 256 |
Dritter Button | MB_DEFBUTTON3 | 512 | #define MB_DEFBUTTON3 512 |
Vierter Button | MB_DEFBUTTON4 | &h300 (768) | #define MB_DEFBUTTON4 &h300 |
Außerdem gibt es noch das Flag MB_TOPMOST, was dafür sorgt, dass die MessageBox immer oben aufliegt. Sie kann dann nicht "unter" anderen Fenstern verschwinden. Um eine modale MessageBox zu erhalten, kann das Flag MB_SYSTEMMODAL verwendet werden.
Weitere Informationen zu den Flags und Angaben zu ihren Zahlwerten finden sich in der MSDN Library.
Ein konkretes Beispiel für die MessageBox-Funktion könnte wie folgt aussehen:
#include "windows.bi"
Dim As Integer iResult
iResult = MessageBox(0, "Soll das Programm wirklich beendet werden?", _
"Taschenrechner Deluxe", _
MB_YESNO Or MB_ICONQUESTION Or MB_DEFBUTTON2 or MB_SYSTEMMODAL)
If iResult = IDYES Then
MessageBox(0, "Schade... Tschüss!", "Taschenrechner Deluxe", 0)
End If
Soll die Datei windows.bi nicht eingebunden werden, kann man die Funktion MessageBox auch selbst deklarieren.
Die Deklaration sieht wie folgt aus:
Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
Diese Deklaration braucht nicht explizit angegeben zu werden, sie ist in der windows.bi enthalten - Es ist auch empfohlen, die Deklarationen aus den Includes zu verwenden, da sie sich in künftigen FreeBasic-Versionen ändern könnten.
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|