CreateDialogIndirectParamA-Funktion (winuser.h)

Erstellt ein modusloses 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

HWND CreateDialogIndirectParamA(
  [in, optional] HINSTANCE       hInstance,
  [in]           LPCDLGTEMPLATEA lpTemplate,
  [in, optional] HWND            hWndParent,
  [in, optional] DLGPROC         lpDialogFunc,
  [in]           LPARAM          dwInitParam
);

Parameter

[in, optional] hInstance

Typ: HINSTANCE

Ein Handle für das Modul, das die Dialogfeldvorlage enthält. Wenn dieser Parameter NULL ist, wird die aktuelle ausführbare Datei verwendet.

[in] lpTemplate

Typ: LPCDLGTEMPLATE

Die Vorlage CreateDialogIndirectParam verwendet zum Erstellen des Dialogfelds. 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 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 Dialogfeldvorlage verwendet der Header das DLGTEMPLATEEX-Format , und die Steuerelementdefinitionen verwenden das DLGITEMTEMPLATEEX-Format .

Nachdem CreateDialogIndirectParam zurückgegeben wurde, können Sie die Vorlage freigeben, die nur zum Starten des Dialogfelds verwendet wird.

[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: HWND

Wenn die Funktion erfolgreich ist, ist der Rückgabewert das Fensterhandle für das Dialogfeld.

Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die CreateDialogIndirectParam-Funktion verwendet die CreateWindowEx-Funktion , um das Dialogfeld zu erstellen. CreateDialogIndirectParam 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, wenn die Vorlage den WS_VISIBLE Stil angibt. Schließlich gibt CreateDialogIndirectParam das Fensterhandle an das Dialogfeld zurück.

Nachdem CreateDialogIndirectParam zurückgegeben wurde, können Sie die ShowWindow-Funktion verwenden, um das Dialogfeld anzuzeigen (sofern es noch nicht sichtbar ist). Um das Dialogfeld zu zerstören, verwenden Sie die Funktion DestroyWindow . Um die Tastaturnavigation und andere Dialogfeldfunktionen zu unterstützen, muss die Nachrichtenschleife für das Dialogfeld die IsDialogMessage-Funktion aufrufen.

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

   
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

CreateDialog

CreateDialogIndirect

CreateDialogParam

Createwindowex

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

DestroyWindow

Dialogfelder

DialogProc

MultiByteToWideChar

Andere Ressourcen

Referenz

Showwindow

WM_INITDIALOG

WM_SETFONT