Freigeben über


MessageBoxW-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 MessageBoxW(
  [in, optional] HWND    hWnd,
  [in, optional] LPCWSTR lpText,
  [in, optional] LPCWSTR 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, weist das Meldungsfeld kein Besitzerfenster auf.

[in, optional] lpText

Typ: LPCTSTR-

Die anzuzeigende Nachricht. Wenn die Zeichenfolge aus mehr als einer Zeile besteht, können Sie die Zeilen mithilfe eines Wagenrücklauf- und/oder Zeilenfeedzeichens zwischen den einzelnen Zeilen trennen.

[in, optional] lpCaption

Typ: LPCTSTR-

Der Titel des Dialogfelds. Wenn dieser Parameter NULL-ist, wird der Standardtitel Error.

[in] uType

Typ: UINT-

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

Um die schaltflächen anzugeben, die im Meldungsfeld angezeigt werden, geben Sie einen der folgenden Werte an.

Wert Bedeutung
MB_ABORTRETRYIGNORE
0x000000002L
Das Meldungsfeld enthält drei Pushschaltflächen: Abbrechen, Wiederholenund Ignorieren.
MB_CANCELTRYCONTINUE
0x00000006L
Das Meldungsfeld enthält drei Pushtasten: Abbrechen, Versuchen Sie es erneut, Weiter. Verwenden Sie diesen Meldungsfeldtyp anstelle von MB_ABORTRETRYIGNORE.
MB_HELP
0x00004000L
Fügt dem Meldungsfeld eine schaltfläche Hilfe- 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
0x000000000L
Das Meldungsfeld enthält eine Schaltfläche: OK. Dies ist die Standardeinstellung.
MB_OKCANCEL
0x00000001L
Das Meldungsfeld enthält zwei Pushtasten: OK und Abbrechen.
MB_RETRYCANCEL
0x00000005L
Das Meldungsfeld enthält zwei Pushtasten: Wiederholen und Abbrechen.
MB_YESNO
0x00000004L
Das Meldungsfeld enthält zwei Pushtasten: Ja und Nein.
MB_YESNOCANCEL
0x00000003L
Das Meldungsfeld enthält drei Pushtasten: Ja, Neinund Abbrechen.
 

Um ein Symbol im Meldungsfeld anzuzeigen, geben Sie einen der folgenden Werte an.

Wert Bedeutung
MB_ICONEXCLAMATION
0x000000030L
Ein Ausrufezeichensymbol wird im Meldungsfeld angezeigt.
MB_ICONWARNING
0x000000030L
Ein Ausrufezeichensymbol wird im Meldungsfeld angezeigt.
MB_ICONINFORMATION
0x00000040L
Ein Symbol, das aus einem Kleinbuchstaben i in einem Kreis besteht, wird im Meldungsfeld angezeigt.
MB_ICONASTERISK
0x00000040L
Ein Symbol, das aus einem Kleinbuchstaben i in einem Kreis besteht, wird im Meldungsfeld angezeigt.
MB_ICONQUESTION
0x000000020L
Ein Fragezeichensymbol wird im Meldungsfeld angezeigt. Das Fragezeichensymbol wird nicht mehr empfohlen, da es nicht eindeutig einen bestimmten Nachrichtentyp darstellt und der Ausdruck einer Nachricht als Frage auf jeden Nachrichtentyp angewendet werden kann. Darüber hinaus können Benutzer das Fragezeichen des Nachrichtensymbols mit Hilfeinformationen verwechseln. Verwenden Sie daher dieses Fragezeichen-Nachrichtensymbol nicht in Ihren Meldungsfeldern. Das System unterstützt seine Einbindung weiterhin nur für Die Abwärtskompatibilität.
MB_ICONSTOP
0x000000010L
Ein Stoppzeichensymbol wird im Meldungsfeld angezeigt.
MB_ICONERROR
0x000000010L
Ein Stoppzeichensymbol wird im Meldungsfeld angezeigt.
MB_ICONHAND
0x000000010L
Ein Stoppzeichensymbol wird im Meldungsfeld angezeigt.
 

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

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

MB_DEFBUTTON1 ist die Standardeinstellung, es sei denn, MB_DEFBUTTON2, MB_DEFBUTTON3oder MB_DEFBUTTON4 wird angegeben.

MB_DEFBUTTON2
0x00000100L
Die zweite Schaltfläche ist die Standardschaltfläche.
MB_DEFBUTTON3
0x00000200L
Die dritte Schaltfläche ist die Standardschaltfläche.
MB_DEFBUTTON4
0x000000300L
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
0x000000000L
Der Benutzer muss auf das Meldungsfeld reagieren, bevor er die Arbeit im Fenster fortsetzt, das vom hWnd Parameter identifiziert wird. Der Benutzer kann jedoch zu den Fenstern anderer Threads wechseln und in diesen Fenstern arbeiten.

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

MB_APPLMODAL ist die Standardeinstellung, wenn weder MB_SYSTEMMODAL noch MB_TASKMODAL angegeben wird.

MB_SYSTEMMODAL
0x00001000L
Identisch mit MB_APPLMODAL mit der Ausnahme, dass das Meldungsfeld die WS_EX_TOPMOST Formatvorlage aufweist. Verwenden Sie systemmodale Meldungsfelder, um den Benutzer über schwerwiegende, potenziell schädliche Fehler zu informieren, die sofortige Aufmerksamkeit erfordern (z. B. nicht genügend Arbeitsspeicher). Dieses Kennzeichen hat keine Auswirkungen auf die Möglichkeit des Benutzers, mit anderen Fenstern als mit hWndzu 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 Parameter NULList. Verwenden Sie dieses Kennzeichen, wenn die aufrufende Anwendung oder Bibliothek nicht über ein Fensterhandle verfügt, aber dennoch eingaben in anderen Fenstern im aufrufenden Thread verhindern muss, ohne andere Threads angehalten zu müssen.
 

Verwenden Sie einen oder mehrere der folgenden Werte, um weitere Optionen anzugeben.

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 rechtsbündig.
MB_RTLREADING
0x00100000L
Zeigt Nachrichten- und Beschriftungstext mit Leserichtung 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 Fensterformatvorlage 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- Parameter NULL-sein. Dies ist so, dass das Meldungsfeld auf einem anderen Desktop als dem Desktop angezeigt werden kann, der dem hWnd-entspricht.

Informationen zu Sicherheitsaspekten bei der Verwendung dieser Kennzeichnung finden Sie unter Interactive Services. Beachten Sie insbesondere, dass diese Kennzeichnung interaktive Inhalte auf einem gesperrten Desktop erzeugen kann und daher nur für einen sehr begrenzten Satz von Szenarien verwendet werden sollte, z. B. Ressourcenausschöpfung.

Rückgabewert

Typ: int

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

Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

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

Zurückgeben von Code/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.

Bemerkungen

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

Ikone Flagwerte
symbol für MB_ICONHAND, MB_ICONSTOP und MB_ICONERROR MB_ICONHAND, MB_ICONSTOPoder 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 Unicode-Formatierungszeichen U+200F, wird am Anfang einer MessageBox-Anzeigezeichenfolge vom MessageBox-Renderingmodul interpretiert, sodass die Lesereihenfolge des MessageBox-Steuerelements von rechts nach links (RTL) gerendert wird.

Wenn Sie ein systemmodales Meldungsfeld verwenden, um anzugeben, dass das System nicht genügend Arbeitsspeicher hat, sollten die Zeichenfolgen, auf die durch die lpText- verwiesen wird, und lpCaption Parameter nicht aus einer Ressourcendatei entnommen werden, da ein Versuch zum Laden der Ressource 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 nach dem Auftreten einer Fehlerbedingung zur Eingabe einer Aktion auffordert. Das Meldungsfeld zeigt die Meldung an, die die Fehlerbedingung beschreibt und wie sie behoben werden kann. Die MB_CANCELTRYCONTINUE Formatvorlage leitet MessageBox- an, um drei Schaltflächen bereitzustellen, mit denen der Benutzer auswählen kann, wie fortzufahren. Die MB_DEFBUTTON2 Formatvorlage legt den Standardfokus auf die zweite Schaltfläche des Meldungsfelds fest, in diesem Fall die Schaltfläche Versuchen Sie es erneut.

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.

Anmerkung

Der winuser.h-Header definiert MessageBox als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winuser.h (enthalten Windows.h)
Library User32.lib
DLL- User32.dll
API-Satz ext-ms-win-ntuser-dialogbox-l1-1-0 (eingeführt in Windows 8)

Siehe auch

Konzeptionelle

Dialogfelder

FlashWindow-

MessageBeep-

MessageBoxEx-

MessageBoxIndirect-

andere Ressourcen

Referenz-

SetForegroundWindow