Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Windows GUI

MessageBox

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.Mitgliedcsde_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?

Es folgt eine Beschreibung der Optionen (für weitere Details siehe Externer Link!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_ICONINFORMATIONInformation
MB_ICONQUESTIONFrage / Fragezeichen
MB_ICONEXCLAMATIONWarnung / Ausrufezeichen
MB_ICONERRORFehler / 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_OKOk-Button
MB_YESNOJa / Nein
MB_ABORTRETRYIGNOREAbbrechen / Wiederholen / Ignorieren
MB_OKCANCELOK / Abbrechen
MB_RETRYCANCELWiederholen / Abbrechen
MB_YESNOCANCELJa / 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_DEFBUTTON1Erster Button angewählt
MB_DEFBUTTON2Zweiter Button angewählt
MB_DEFBUTTON3Dritter Button angewählt
MB_DEFBUTTON4Vierter 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
JaIDYES6#define IDYES 6
NeinIDNO7#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:
InformationMB_ICONINFORMATION64#define MB_ICONINFORMATION 64
Frage / FragezeichenMB_ICONQUESTION32#define MB_ICONQUESTION 32
Warnung / AusrufezeichenMB_ICONEXCLAMATION&h30 (48)#define MB_ICONEXCLAMATION &h30
Fehler / StopsymbolMB_ICONERROR16#define MB_ICONERROR 16

Übersichtstabelle DefButtons:

DefButton:Konstante:Wert:Definition:
Erster ButtonMB_DEFBUTTON10#define MB_DEFBUTTON1 0
Zweiter ButtonMB_DEFBUTTON2256#define MB_DEFBUTTON2 256
Dritter ButtonMB_DEFBUTTON3512#define MB_DEFBUTTON3 512
Vierter ButtonMB_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 Externer Link!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
  • Das Code-Beispiel wurde am 10.06.2007 von Mitgliedcsde_rats angelegt.
  • Die aktuellste Version wurde am 30.08.2011 von AdministratorSebastian gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen