Freigeben über


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 Nachricht an die Dialogfeldprozedur. Eine Anwendung kann diesen Wert verwenden, um Dialogfeld-Steuerelemente 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 die Kopfzeile 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 mit variabler Länge.

In einer erweiterten Vorlage für ein Dialogfeld verwendet die Kopfzeile 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 an das Dialogfeld im lParam- Parameter der WM_INITDIALOG Nachricht ü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, da der hWndParent Parameter ungültig ist, ist der Rückgabewert null. Die Funktion gibt in diesem Fall null aus Gründen der Kompatibilität mit früheren Versionen von Windows zurück. Wenn die Funktion aus einem anderen Grund fehlschlägt, lautet der Rückgabewert -1. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

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 die formatvorlage DS_SETFONT oder DS_SHELLFONT angibt, sendet die Funktion auch eine WM_SETFONT Nachricht an die Dialogfeldprozedur. Die Funktion zeigt das Dialogfeld an (unabhängig davon, ob die Vorlage die WS_VISIBLE Formatvorlage angibt), deaktiviert das Besitzerfenster und startet eine eigene Nachrichtenschleife zum Abrufen und Verteilen von Nachrichten für das Dialogfeld.

Wenn die Dialogfeldprozedur die EndDialog--Funktion aufruft, wird das Dialogfeld DialogBoxIndirectParam zerstört, die Meldungsschleife beendet, das Besitzerfenster (sofern zuvor aktiviert) aktiviert und den nResult Parameter zurückgegeben, der durch die Dialogfeldprozedur angegeben wird, wenn EndDialogaufgerufen wird.

In einer Standarddialogfeldvorlage müssen die DLGTEMPLATE- Struktur und jede der DLGITEMTEMPLATE- Strukturen an DWORD- Grenzen ausgerichtet werden. Das Erstellungsdatenarray, das auf eine DLGITEMTEMPLATE- Struktur folgt, muss auch an einer DWORD- Grenze ausgerichtet werden. Alle anderen Arrays mit variabler Länge in der Vorlage müssen an WORD- Grenzen ausgerichtet werden.

In einer erweiterten Dialogfeldvorlage müssen die DLGTEMPLATEEX Kopfzeile und jeder der DLGITEMTEMPLATEEX--Steuerelementdefinitionen an DWORD- Grenzen ausgerichtet werden. Wenn vorhanden, muss das Erstellungsdatenarray, das auf eine DLGITEMTEMPLATEEX- Struktur folgt, auch an einer DWORD- Grenze ausgerichtet werden. Alle anderen Arrays mit variabler Länge in der Vorlage müssen an WORD- Grenzen ausgerichtet werden.

Alle Zeichenzeichenfolgen in der Dialogfeldvorlage, z. B. Titel für das Dialogfeld und Schaltflächen, müssen Unicode-Zeichenfolgen sein.

Anmerkung

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
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

CreateWindowEx-

DLGITEMTEMPLATE-

DLGITEMTEMPLATEEX

DLGTEMPLATE-

DLGTEMPLATEEX-

Dialogfelder

DialogBox-

DialogBoxIndirect-

DialogBoxParam-

DialogProc-

EndDialog-

Referenz-

WM_INITDIALOG

WM_SETFONT