CreateDialogIndirect

Das CreateDialogIndirect -Makro erstellt ein nicht modales Dialogfeld aus einer Dialogfeldvorlage im Speicher. Das CreateDialogIndirect -Makro verwendet die CreateDialogIndirectParam -Funktion.

(HWND CreateDialogIndirect HINSTANCE  hInstance, / / handle für die AnwendungsinstanzLPCDLGTEMPLATElpTemplate, / / Zeiger auf Dialogfeld Feld VorlageHWNDhWndParent, / / handle für Eigentümer FensterDLGPROCLpDialogFunc / / Zeiger auf Dialogfeld im Feld Prozedur);
 

Parameter

hInstance
Identifiziert die Instanz des Moduls, das das Dialogfeld erstellt.
lpTemplate
Zeiger auf einen globalen Speicher-Objekt enthält eine Vorlage, die CreateDialogIndirect verwendet, um das Dialogfeld zu erstellen. Eine Dialogfeld Feld Vorlage besteht aus einem Header, der beschreibt das Dialogfeld, gefolgt von einem oder mehreren zusätzlichen Datenblöcke, die jedes der Steuerelemente im Dialogfeld zu beschreiben. Die Vorlage kann entweder das Standardformat oder das erweiterte Format verwenden.

Der Header ist in einer Standardvorlage eine DLGTEMPLATE Struktur gefolgt von zusätzlichen Arrays variabler Länge. Die Daten für jedes Steuerelement besteht aus einer DLGITEMTEMPLATE gefolgt von zusätzlichen Arrays variabler Länge.

In einer erweiterten Dialogfeld Feld Vorlage der Header verwendet das DLGTEMPLATEEX -Format und die Steuerelement-Definitionen verwenden das DLGITEMTEMPLATEEX -format.

Nach CreateDialogIndirect zurückgibt, können Sie die Vorlage freigeben, die nur verwendet wird, um das Dialogfeld begonnen zu erhalten.

hWndParent
Identifiziert das Fenster, das das Dialogfeld besitzt.
lpDialogFunc
Zeiger auf das Dialogfeld Feld Verfahren. Weitere Informationen über das Dialogfeld Feld Verfahren finden Sie unter DialogProc.

Rückgabewerte

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

Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL. Rufen Sie Fehlerinformationen verlängert bekommen, GetLastError.

Bemerkungen

Das CreateDialogIndirect -Makro verwendet die CreateWindowEx -Funktion, um das Dialogfeld erstellen. CreateDialogIndirect sendet dann eine WM_INITDIALOG -Meldung an das Dialogfeld Feld Verfahren. Wenn die Vorlage die Style DS_SETFONT angibt, sendet die Funktion auch eine WM_SETFONT -Nachricht an die Dialogfeldprozedur. Die Funktion zeigt das Dialogfeld an, wenn die Vorlage den WS_VISIBLE Stil gibt. Schließlich, gibt CreateDialogIndirect den Fenster-Handle auf das Dialogfeld.

Nach CreateDialogIndirect zurückgibt, können Sie die ShowWindow -Funktion, um das Dialogfeld anzuzeigen (falls es nicht bereits angezeigt wird). Verwenden Sie das Dialogfeld zerstören, die DestroyWindow -Funktion.

In einer Norm Dialogfeldvorlage müssen die Struktur DLGTEMPLATE und jeder der DLGITEMTEMPLATE Strukturen auf DWORD -Grenzen ausgerichtet werden. Das Schaffung Daten-Array, das eine DLGITEMTEMPLATE Struktur folgt muss auch auf ein DWORD -Grenze ausgerichtet werden. Alle von den anderen Arrays variabler Länge in der Vorlage muss auf Wortgrenzen ausgerichtet werden müssen.

In einer erweiterten Dialogfeld Feld Vorlage müssen die DLGTEMPLATEEX -Header und jedes DLGITEMTEMPLATEEX Steuerelement Definitionen auf DWORD -Grenzen ausgerichtet werden. Die Schaffung Daten-Array, wenn vorhanden, die eine DLGITEMTEMPLATEEX -Struktur folgt auch auf ein DWORD -Grenzen ausgerichtet werden müssen. Alle von den anderen Arrays variabler Länge in der Vorlage muss auf Wortgrenzen ausgerichtet werden.

Alle Zeichenfolgen in der Dialogfeldvorlage, wie Titel für die Schaltflächen, und das Dialogfeld muss Unicode-Zeichenfolgen. Um Code zu erstellen, die auf Windows und Windows NT funktioniert, verwenden Sie die Funktion MultiByteToWideChar diese Unicode-Zeichenfolgen generieren.

Windows 95 und höher:Das System unterstützt maximal 255 Steuerelemente pro Dialogfeld Feld Vorlage. Wenn Sie mehr als 255 Steuerelemente in einem Dialogfeld platzieren, erstellen Sie die Steuerelemente in der WM_INITDIALOG-Meldungshandler anstatt platzieren sie in der Vorlage.

Windows CE: Nicht alle Formate werden unterstützt in der DLGTEMPLATE Struktur in das Dialogfeldvorlage Parameter verweist die LpTemplate .

QuickInfo

&Nbsp; Windows NT: Version 3.1 oder höher erforderlich.
Windows:Erfordert Windows 95 oder höher.
Windows CE:Version 1.0 oder höher benötigt.
Header:In winuser.h deklarierten.
Importieren Bibliothek:Verwenden Sie user32.lib.
Unicode:Als Unicode und ANSI-Versionen unter Windows NT implementiert.

Siehe auch

Übersicht über Dialogfelder, Dialogfeld Feld Funktionen, "createDialog", CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT

Index