CreateDialogIndirectParam

Die CreateDialogIndirectParam -Funktion erstellt ein nicht modales Dialogfeld aus einer Dialogfeldvorlage im Speicher. Vor dem Anzeigen des Dialogfelds, übergibt die Funktion einen anwendungsdefinierter Wert an die Dialogfeldprozedur als Parameter lParam der Nachricht WM_INITDIALOG . Eine Anwendung kann diesen Wert verwenden, Dialogfeld-Steuerelemente zu initialisieren.

(HWND CreateDialogIndirectParam HINSTANCE  hInstance, / / handle für die AnwendungsinstanzLPCDLGTEMPLATElpTemplate, / / Zeiger auf Dialogfeld Feld VorlageHWNDhWndParent, / / handle für Eigentümer FensterDLGPROClpDialogFunc, / / Zeiger auf Dialogfeld im Feld ProzedurLPARAMlParamInit / / Initialisierungswert);
 

Parameter

hInstance
Identifiziert die Instanz des Moduls, das das Dialogfeld erstellen wird.
lpTemplate
Zeiger auf einen globalen Speicher-Objekt enthält eine Vorlage, die CreateDialogIndirectParam 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 CreateDialogIndirectParam 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.
lParamInit
Gibt den Wert an das Dialogfeld in den lParam -Parameter der Nachricht WM_INITDIALOG übergeben.

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

Die CreateDialogIndirectParam -Funktion verwendet die CreateWindowEx -Funktion um das Dialogfeld zu erstellen. CreateDialogIndirectParam 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 CreateDialogIndirectParam den Fenster-Handle auf das Dialogfeld.

Nach CreateDialogIndirectParam 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: Dialogfelder außerhalb des sichtbaren Bereichs des Bildschirms werden nicht automatisch neu positioniert.

Wenn der Benutzer ALT + H drückt, während das Dialogfeld den Eingabefokus besitzt, sendet das System eine WM_HELP-Meldung an die Dialogfeld-Prozedur. Eine Anwendung sollte auf diese Meldung reagieren, indem Sie kontextbezogene Hilfe für das Dialogfeld anzeigen.

Die folgenden Formate werden nicht unterstützt, für die Stil -Member der Struktur DLGTEMPLATE :

Verwenden Sie Standardposition das Style DS_CENTER.

Wenn das Format WS_CHILD nicht angegeben ist, wird der WS_POPUP Stil angenommen.

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", CreateDialogIndirect, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT

Index