DialogBoxIndirectParamA-Funktion (winuser.h)
Erstellt ein modales Dialogfeld aus einer Dialogfeldvorlage im Arbeitsspeicher. Vor dem Anzeigen des Dialogfelds übergibt die Funktion einen anwendungsdefinierten Wert als lParam-Parameter der WM_INITDIALOG Meldung an die Dialogfeldprozedur. Eine Anwendung kann diesen Wert verwenden, um Dialogfeldsteuerelemente zu initialisieren.
Syntax
INT_PTR DialogBoxIndirectParamA(
[in, optional] HINSTANCE hInstance,
[in] LPCDLGTEMPLATEA hDialogTemplate,
[in, optional] HWND hWndParent,
[in, optional] DLGPROC lpDialogFunc,
[in] LPARAM dwInitParam
);
Parameter
[in, optional] hInstance
Typ: HINSTANCE
Ein Handle für das Modul, das das Dialogfeld erstellt.
[in] hDialogTemplate
Typ: LPCDLGTEMPLATE
Die Vorlage, die DialogBoxIndirectParam zum Erstellen des Dialogfelds verwendet. Eine Dialogfeldvorlage besteht aus einer Kopfzeile, die das Dialogfeld beschreibt, gefolgt von einem oder mehreren zusätzlichen Datenblöcken, die die einzelnen Steuerelemente im Dialogfeld beschreiben. Die Vorlage kann entweder das Standardformat oder das erweiterte Format verwenden.
In einer Standardvorlage für ein Dialogfeld ist der Header eine DLGTEMPLATE-Struktur , gefolgt von zusätzlichen Arrays mit variabler Länge. Die Daten für jedes Steuerelement bestehen aus einer DLGITEMTEMPLATE-Struktur , gefolgt von zusätzlichen Arrays variabler Länge.
In einer erweiterten Vorlage für ein Dialogfeld verwendet der Header das DLGTEMPLATEEX-Format , und die Steuerelementdefinitionen verwenden das DLGITEMTEMPLATEEX-Format .
[in, optional] hWndParent
Typ: HWND
Ein Handle für das Fenster, das das Dialogfeld besitzt.
[in, optional] lpDialogFunc
Typ: DLGPROC
Ein Zeiger auf die Dialogfeldprozedur. Weitere Informationen zur Dialogfeldprozedur finden Sie unter DialogProc.
[in] dwInitParam
Typ: LPARAM
Der Wert, der im lParam-Parameter der WM_INITDIALOG Meldung an das Dialogfeld übergeben werden soll.
Rückgabewert
Typ: INT_PTR
Wenn die Funktion erfolgreich ist, ist der Rückgabewert der nResult-Parameter , der im Aufruf der EndDialog-Funktion angegeben wurde, die zum Beenden des Dialogfelds verwendet wurde.
Wenn die Funktion fehlschlägt, weil der hWndParent-Parameter ungültig ist, ist der Rückgabewert null. Die Funktion gibt in diesem Fall aus Kompatibilität mit früheren Versionen von Windows null zurück. Wenn die Funktion aus einem anderen Grund fehlschlägt, ist der Rückgabewert –1. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Die DialogBoxIndirectParam-Funktion verwendet die CreateWindowEx-Funktion , um das Dialogfeld zu erstellen. DialogBoxIndirectParam sendet dann eine WM_INITDIALOG Nachricht an die Dialogfeldprozedur. Wenn die Vorlage den DS_SETFONT - oder DS_SHELLFONT-Stil angibt, sendet die Funktion auch eine WM_SETFONT Meldung an die Dialogfeldprozedur. Die Funktion zeigt das Dialogfeld an (unabhängig davon, ob die Vorlage den WS_VISIBLE Stil angibt), deaktiviert das Besitzerfenster und startet eine eigene Nachrichtenschleife, um Nachrichten für das Dialogfeld abzurufen und zu senden.
Wenn die Dialogfeldprozedur die EndDialog-Funktion aufruft, zerstört DialogBoxIndirectParam das Dialogfeld, beendet die Nachrichtenschleife, aktiviert das Besitzerfenster (sofern zuvor aktiviert), und gibt den nResult-Parameter zurück, der von der Dialogfeldprozedur angegeben wurde, wenn es EndDialog aufgerufen hat.
In einer Standarddialogfeldvorlage müssen die DLGTEMPLATE-Struktur und jede der DLGITEMTEMPLATE-Strukturen an DWORD-Grenzen ausgerichtet sein. Das Erstellungsdatenarray, das einer DLGITEMTEMPLATE-Struktur folgt, muss ebenfalls an einer DWORD-Grenze ausgerichtet werden. Alle anderen Arrays mit variabler Länge in der Vorlage müssen an WORD-Grenzen ausgerichtet sein.
In einer erweiterten Dialogfeldvorlage müssen der DLGTEMPLATEEX-Header und jede der DLGITEMTEMPLATEEX-Steuerelementdefinitionen an DWORD-Grenzen ausgerichtet sein. Das Erstellungsdatenarray, falls vorhanden, das einer DLGITEMTEMPLATEEX-Struktur folgt, muss ebenfalls an einer DWORD-Grenze ausgerichtet werden. Alle anderen Arrays mit variabler Länge in der Vorlage müssen an WORD-Grenzen ausgerichtet sein.
Alle Zeichenfolgen in der Dialogfeldvorlage, z. B. Titel für das Dialogfeld und Schaltflächen, müssen Unicode-Zeichenfolgen sein.
Hinweis
Der winuser.h-Header definiert DialogBoxIndirectParam 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 |
---|---|
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 (windows.h einschließen) |
Bibliothek | User32.lib |
DLL | User32.dll |
APIs | ext-ms-win-ntuser-dialogbox-l1-1-0 (eingeführt in Windows 8) |
Siehe auch
Konzept
Referenz