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 |
---|---|
|
Das Meldungsfeld enthält drei Drucktasten: Abbrechen, Wiederholen und Ignorieren. |
|
Das Meldungsfeld enthält drei Drucktasten: Abbrechen, Erneut versuchen, Fortfahren. Verwenden Sie diesen Meldungsfeldtyp anstelle von MB_ABORTRETRYIGNORE. |
|
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. |
|
Das Meldungsfeld enthält eine Drucktaste: OK. Dies ist die Standardoption. |
|
Das Meldungsfeld enthält zwei Drucktasten: OK und Abbrechen. |
|
Das Meldungsfeld enthält zwei Drucktasten: Wiederholen und Abbrechen. |
|
Das Meldungsfeld enthält zwei Drucktasten: Ja und Nein. |
|
Das Meldungsfeld enthält drei Drucktasten: Ja, Nein und Abbrechen. |
Geben Sie einen der folgenden Werte an, um ein Symbol im Meldungsfeld anzuzeigen.
Um die Standardschaltfläche anzugeben, geben Sie einen der folgenden Werte an.
Geben Sie einen der folgenden Werte an, um die Modalität des Dialogfelds anzugeben.
Um weitere Optionen anzugeben, verwenden Sie mindestens einen der folgenden Werte.
Wert | Bedeutung |
---|---|
|
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. |
|
Der Text ist richtig begründet. |
|
Zeigt Nachrichten und Untertitel Text mithilfe der Lesereihenfolge von rechts nach links auf hebräischen und arabischen Systemen an. |
|
Das Meldungsfeld wird zum Vordergrundfenster. Intern ruft das System die SetForegroundWindow-Funktion für das Meldungsfeld auf. |
|
Das Meldungsfeld wird mit der WS_EX_TOPMOST Fensterformat erstellt. |
|
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 |
---|---|
|
Die Schaltfläche Abbrechen wurde ausgewählt. |
|
Die Schaltfläche Abbrechen wurde ausgewählt. |
|
Die Schaltfläche Weiter wurde ausgewählt. |
|
Die Schaltfläche Ignorieren wurde ausgewählt. |
|
Die Schaltfläche Nein wurde ausgewählt. |
|
Die Schaltfläche OK wurde ausgewählt. |
|
Die Schaltfläche Wiederholen wurde ausgewählt. |
|
Die Schaltfläche Erneut versuchen wurde ausgewählt. |
|
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 |
---|---|
MB_ICONHAND, MB_ICONSTOP oder MB_ICONERROR | |
MB_ICONQUESTION | |
MB_ICONEXCLAMATION oder MB_ICONWARNING | |
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:
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
Andere Ressourcen
Referenz