DialogBoxIndirect

Das DialogBoxIndirect -Makro erstellt ein modales Dialogfeld aus einer Dialogfeldvorlage im Speicher. DialogBoxIndirect gibt keine Kontrolle zurück, bis die angegebene Rückruffunktion des modalen Dialogfelds wird beendet durch die EndDialog -Funktion aufrufen. Das DialogBoxIndirect -Makro verwendet die DialogBoxIndirectParam -Funktion.

Int DialogBoxIndirect) HINSTANCE  hInstance, / / handle für die AnwendungsinstanzLPDLGTEMPLATElpTemplate, / / Dialogfeld Feld Vorlage identifiziertHWNDhWndParent, / / 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 DialogBoxIndirect 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 für ein Dialogfeld ein 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 Vorlage für ein Dialogfeld der Header verwendet das DLGTEMPLATEEX -Format und die Steuerelement-Definitionen verwenden das DLGITEMTEMPLATEEX -format.

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 der nResult Parameter angegeben im Aufruf an die EndDialog -Funktion, die verwendet wurde, um das Dialogfeld zu beenden.

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

Bemerkungen

Das DialogBoxIndirect -Makro verwendet die CreateWindowEx -Funktion, um das Dialogfeld erstellen. DialogBoxIndirect 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 (unabhängig davon, ob die Vorlage den Style WS_VISIBLE gibt), deaktiviert das Besitzerfenster und beginnt seine eigene Meldungsschleife abrufen und Versenden von Nachrichten für das Dialogfeld.

Wenn die Dialogfeldprozedur die EndDialog -Funktion aufruft, DialogBoxIndirect das Dialogfeld zerstört, endet die Meldungsschleife, ermöglicht das Besitzerfenster (falls zuvor aktiviert) und gibt nResult Parameter, die durch die Dialogfeldprozedur wenn es EndDialog aufgerufen.

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, CreateWindowEx, DialogBox, DialogBoxIndirectParam, DialogBoxParam, DialogProc DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT

Index