MessageBox-Funktion (winuser.h)

Zeigt ein modales Dialogfeld an, das ein Systemsymbol, eine Reihe von Schaltflächen und eine kurze anwendungsspezifische Meldung enthält, z. B. status- oder Fehlerinformationen. Das Meldungsfeld gibt einen ganzzahligen Wert zurück, der angibt, auf welche Schaltfläche der Benutzer geklickt hat.

Syntax

int MessageBox(
  [in, optional] HWND    hWnd,
  [in, optional] LPCTSTR lpText,
  [in, optional] LPCTSTR lpCaption,
  [in]           UINT    uType
);

Parameter

[in, optional] hWnd

Typ: HWND

Ein Handle für das Besitzerfenster des zu erstellenden Meldungsfelds. Wenn dieser Parameter NULL ist, hat das Meldungsfeld kein Besitzerfenster.

[in, optional] lpText

Typ: LPCTSTR

Die anzuzeigende Nachricht. Wenn die Zeichenfolge aus mehr als einer Zeile besteht, können Sie die Zeilen mit einem Wagenrücklauf- und/oder Zeilenvorschubzeichen zwischen jeder Zeile trennen.

[in, optional] lpCaption

Typ: LPCTSTR

Der Titel des Dialogfelds. Wenn dieser Parameter NULL ist, lautet der Standardtitel Fehler.

[in] uType

Typ: UINT

Inhalt und Verhalten des Dialogfelds. Dieser Parameter kann eine Kombination von Flags aus den folgenden Flaggruppen sein.

Geben Sie einen der folgenden Werte an, um die im Meldungsfeld angezeigten Schaltflächen anzugeben.

Wert Bedeutung
MB_ABORTRETRYIGNORE
0x00000002L
Das Meldungsfeld enthält drei Drucktasten: Abbrechen, Wiederholen und Ignorieren.
MB_CANCELTRYCONTINUE
0x00000006L
Das Meldungsfeld enthält drei Drucktasten: Abbrechen, Erneut versuchen, Fortfahren. Verwenden Sie diesen Meldungsfeldtyp anstelle von MB_ABORTRETRYIGNORE.
MB_HELP
0x00004000L
Fügt dem Meldungsfeld eine Hilfeschaltfläche hinzu. Wenn der Benutzer auf die Schaltfläche Hilfe klickt oder F1 drückt, sendet das System eine WM_HELP Nachricht an den Besitzer.
MB_OK
0x00000000L
Das Meldungsfeld enthält eine Drucktaste: OK. Dies ist die Standardoption.
MB_OKCANCEL
0x00000001L
Das Meldungsfeld enthält zwei Drucktasten: OK und Abbrechen.
MB_RETRYCANCEL
0x00000005L
Das Meldungsfeld enthält zwei Drucktasten: Wiederholen und Abbrechen.
MB_YESNO
0x00000004L
Das Meldungsfeld enthält zwei Drucktasten: Ja und Nein.
MB_YESNOCANCEL
0x00000003L
Das Meldungsfeld enthält drei Drucktasten: Ja, Nein und Abbrechen.
 

Geben Sie einen der folgenden Werte an, um ein Symbol im Meldungsfeld anzuzeigen.

Wert Bedeutung
MB_ICONEXCLAMATION
0x000000030L
Im Meldungsfeld wird ein Ausrufezeichen angezeigt.
MB_ICONWARNING
0x000000030L
Im Meldungsfeld wird ein Ausrufezeichen angezeigt.
MB_ICONINFORMATION
0x00000040L
Im Meldungsfeld wird ein Symbol angezeigt, das aus einem Kleinbuchstaben i in einem Kreis besteht.
MB_ICONASTERISK
0x00000040L
Im Meldungsfeld wird ein Symbol angezeigt, das aus einem Kleinbuchstaben i in einem Kreis besteht.
MB_ICONQUESTION
0x00000020L
Im Meldungsfeld wird ein Fragezeichensymbol angezeigt. Das Fragezeichen-Meldungssymbol wird nicht mehr empfohlen, da es keinen bestimmten Meldungstyp eindeutig darstellt und die Formulierung einer Nachricht als Frage kann auf alle Meldungstypen angewendet werden. Darüber hinaus können Benutzer das Meldungssymbol „Fragezeichen“ mit Hilfeinformationen verwechseln. Verwenden Sie dieses Fragezeichen-Meldungssymbol nicht in Ihren Meldungsfeldern. Das System unterstützt seine Einbindung nur aus Gründen der Abwärtskompatibilität.
MB_ICONSTOP
0x00000010L
Im Meldungsfeld wird ein Stoppzeichensymbol angezeigt.
MB_ICONERROR
0x00000010L
Im Meldungsfeld wird ein Stoppzeichensymbol angezeigt.
MB_ICONHAND
0x00000010L
Im Meldungsfeld wird ein Stoppzeichensymbol angezeigt.
 

Um die Standardschaltfläche anzugeben, geben Sie einen der folgenden Werte an.

Wert Bedeutung
MB_DEFBUTTON1
0x00000000L
Die erste Schaltfläche ist die Standardschaltfläche.

MB_DEFBUTTON1 ist der Standardwert, sofern nicht MB_DEFBUTTON2, MB_DEFBUTTON3 oder MB_DEFBUTTON4 angegeben ist.

MB_DEFBUTTON2
0x00000100L
Die zweite Schaltfläche ist die Standardschaltfläche.
MB_DEFBUTTON3
0x00000200L
Die dritte Schaltfläche ist die Standardschaltfläche.
MB_DEFBUTTON4
0x00000300L
Die vierte Schaltfläche ist die Standardschaltfläche.
 

Geben Sie einen der folgenden Werte an, um die Modalität des Dialogfelds anzugeben.

Wert Bedeutung
MB_APPLMODAL
0x00000000L
Der Benutzer muss auf das Meldungsfeld reagieren, bevor er die Arbeit in dem durch den hWnd-Parameter identifizierten Fenster fortsetzt. Der Benutzer kann jedoch zu den Fenstern anderer Threads wechseln und in diesen Fenstern arbeiten.

Abhängig von der Hierarchie der Fenster in der Anwendung kann der Benutzer möglicherweise zu anderen Fenstern innerhalb des Threads wechseln. Alle untergeordneten Fenster des übergeordneten Meldungsfelds werden automatisch deaktiviert, Popupfenster jedoch nicht.

MB_APPLMODAL ist der Standardwert, wenn weder MB_SYSTEMMODAL noch MB_TASKMODAL angegeben ist.

MB_SYSTEMMODAL
0x00001000L
Identisch mit MB_APPLMODAL mit der Ausnahme, dass das Meldungsfeld das WS_EX_TOPMOST Format aufweist. Verwenden Sie systemmodale Meldungsfelder, um den Benutzer über schwerwiegende, potenziell schädliche Fehler zu benachrichtigen, die sofortige Aufmerksamkeit erfordern (z. B. knapper Arbeitsspeicher). Dieses Flag hat keine Auswirkung auf die Fähigkeit des Benutzers, mit anderen Fenstern als den mit hWnd verknüpften zu interagieren.
MB_TASKMODAL
0x00002000L
Identisch mit MB_APPLMODAL außer, dass alle Fenster der obersten Ebene, die zum aktuellen Thread gehören, deaktiviert sind, wenn der hWnd-ParameterNULL ist. Verwenden Sie dieses Flag, wenn für die aufrufende Anwendung oder Bibliothek kein Fensterhandle verfügbar ist, aber dennoch die Eingabe an andere Fenster im aufrufenden Thread verhindert werden muss, ohne andere Threads anzuhalten.
 

Um weitere Optionen anzugeben, verwenden Sie mindestens einen der folgenden Werte.

Wert Bedeutung
MB_DEFAULT_DESKTOP_ONLY
0x00020000L
Identisch mit dem Desktop der interaktiven Fensterstation. Weitere Informationen finden Sie unter Fensterstationen.

Wenn der aktuelle Eingabedesktop nicht der Standarddesktop ist, wird MessageBox erst zurückgegeben, wenn der Benutzer zum Standarddesktop wechselt.

MB_RIGHT
0x00080000L
Der Text ist richtig begründet.
MB_RTLREADING
0x00100000L
Zeigt Nachrichten und Untertitel Text mithilfe der Lesereihenfolge von rechts nach links auf hebräischen und arabischen Systemen an.
MB_SETFOREGROUND
0x00010000L
Das Meldungsfeld wird zum Vordergrundfenster. Intern ruft das System die SetForegroundWindow-Funktion für das Meldungsfeld auf.
MB_TOPMOST
0x00040000L
Das Meldungsfeld wird mit der WS_EX_TOPMOST Fensterformat erstellt.
MB_SERVICE_NOTIFICATION
0x00200000L
Der Aufrufer ist ein Dienst, der den Benutzer über ein Ereignis benachrichtigt. Die Funktion zeigt ein Meldungsfeld auf dem aktuellen aktiven Desktop an, auch wenn kein Benutzer am Computer angemeldet ist.

Terminaldienste: Wenn der aufrufende Thread über ein Identitätswechseltoken verfügt, leitet die Funktion das Meldungsfeld an die im Identitätswechseltoken angegebene Sitzung weiter.

Wenn dieses Flag festgelegt ist, muss der hWnd-ParameterNULL sein. Dadurch kann das Meldungsfeld auf einem anderen Desktop als dem Desktop angezeigt werden, der dem hWnd entspricht.

Informationen zu Sicherheitsaspekten in Bezug auf die Verwendung dieses Flags finden Sie unter Interactive Services. Beachten Sie insbesondere, dass dieses Flag interaktive Inhalte auf einem gesperrten Desktop erzeugen kann und daher nur für einen sehr begrenzten Satz von Szenarien verwendet werden sollte, z. B. die Ressourcenauslastung.

Rückgabewert

Typ: int

Wenn ein Meldungsfeld über die Schaltfläche Abbrechen verfügt, gibt die Funktion den IDCANCEL-Wert zurück, wenn entweder die ESC-Taste gedrückt oder die Schaltfläche Abbrechen ausgewählt ist. Wenn im Meldungsfeld keine Schaltfläche Abbrechen vorhanden ist, wirkt sich das Drücken von ESC nicht aus, es sei denn, es ist eine MB_OK-Schaltfläche vorhanden. Wenn eine MB_OK-Schaltfläche angezeigt wird und der Benutzer ESC drückt, lautet der Rückgabewert IDOK.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Wenn die Funktion erfolgreich ist, ist der Rückgabewert einer der folgenden Menüelementwerte.

Rückgabecode/-wert BESCHREIBUNG
IDABORT
3
Die Schaltfläche Abbrechen wurde ausgewählt.
IDCANCEL
2
Die Schaltfläche Abbrechen wurde ausgewählt.
IDCONTINUE
11
Die Schaltfläche Weiter wurde ausgewählt.
IDIGNORE
5
Die Schaltfläche Ignorieren wurde ausgewählt.
IDNO
7
Die Schaltfläche Nein wurde ausgewählt.
IDOK
1
Die Schaltfläche OK wurde ausgewählt.
IDRETRY
4
Die Schaltfläche Wiederholen wurde ausgewählt.
IDTRYAGAIN
10
Die Schaltfläche Erneut versuchen wurde ausgewählt.
IDYES
6
Die Schaltfläche Ja wurde ausgewählt.

Hinweise

Die folgenden Systemsymbole können in einem Meldungsfeld verwendet werden, indem Sie den uType-Parameter auf den entsprechenden Flagwert festlegen.

Symbol Flagwerte
Symbol für MB_ICONHAND, MB_ICONSTOP und MB_ICONERROR MB_ICONHAND, MB_ICONSTOP oder MB_ICONERROR
Symbol für MB_ICONQUESTION MB_ICONQUESTION
Symbol für MB_ICONEXCLAMATION und MB_ICONWARNING MB_ICONEXCLAMATION oder MB_ICONWARNING
Symbol für MB_ICONASTERISK und MB_ICONINFORMATION MB_ICONASTERISK oder MB_ICONINFORMATION
 

Das Hinzufügen von zwei Rechts-nach-Links-Markierungen (RLMs), dargestellt durch das Unicode-Formatierungszeichen U+200F, am Anfang einer MessageBox-Anzeigezeichenfolge wird vom MessageBox-Renderingmodul interpretiert, sodass die Lesereihenfolge der MessageBox als RTL gerendert wird.

Wenn Sie ein systemmodales Meldungsfeld verwenden, um anzugeben, dass das System wenig Arbeitsspeicher hat, sollten die Zeichenfolgen, auf die die Parameter lpText und lpCaption verweisen, nicht aus einer Ressourcendatei entnommen werden, da ein Versuch, die Ressource zu laden, möglicherweise fehlschlägt.

Wenn Sie ein Meldungsfeld erstellen, während ein Dialogfeld vorhanden ist, verwenden Sie ein Handle für das Dialogfeld als hWnd-Parameter . Der hWnd-Parameter sollte kein untergeordnetes Fenster identifizieren, z. B. ein Steuerelement in einem Dialogfeld.

Beispiele

Im folgenden Beispiel zeigt die Anwendung ein Meldungsfeld an, das den Benutzer zur Eingabe einer Aktion auffordert, nachdem eine Fehlerbedingung aufgetreten ist. Im Meldungsfeld wird die Meldung angezeigt, die die Fehlerbedingung und deren Behebung beschreibt. Der MB_CANCELTRYCONTINUE-Stil weist MessageBox an, drei Schaltflächen bereitzustellen, mit denen der Benutzer auswählen kann, wie er vorgehen soll. Die MB_DEFBUTTON2-Formatvorlage legt den Standardfokus auf die zweite Schaltfläche des Meldungsfelds fest, in diesem Fall die Schaltfläche Erneut versuchen .

int DisplayResourceNAMessageBox()
{
    int msgboxID = MessageBox(
        NULL,
        (LPCWSTR)L"Resource not available\nDo you want to try again?",
        (LPCWSTR)L"Account Details",
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
    );

    switch (msgboxID)
    {
    case IDCANCEL:
        // TODO: add code
        break;
    case IDTRYAGAIN:
        // TODO: add code
        break;
    case IDCONTINUE:
        // TODO: add code
        break;
    }

    return msgboxID;
}

Die folgende Abbildung zeigt die Ausgabe aus dem vorherigen Codebeispiel:

Meldungsfeld

Ein weiteres Meldungsfeldbeispiel finden Sie unter Anzeigen eines Meldungsfelds.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-dialogbox-l1-1-0 (eingeführt in Windows 8)

Siehe auch

Konzept

Dialogfelder

FlashWindow

MessageBeep

MessageBoxEx

MessageBoxIndirect

Andere Ressourcen

Referenz

SetForegroundWindow