Die DialogBoxIndirectParam -Funktion erstellt ein 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.
Int DialogBoxIndirectParam) HINSTANCE hInstance, / / handle für die AnwendungsinstanzLPCDLGTEMPLATEhDialogTemplate, / / Dialogfeld Feld Vorlage identifiziertHWNDhWndParent, / / handle für Eigentümer FensterDLGPROClpDialogFunc, / / Zeiger auf Dialogfeld im Feld ProzedurLPARAMDwInitParam / / Initialisierungswert);
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.
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.
Die DialogBoxIndirectParam -Funktion verwendet die CreateWindowEx -Funktion um das Dialogfeld zu erstellen. DialogBoxIndirectParam 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, DialogBoxIndirectParam 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: 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.
Andere Einschränkungen Dialogfeld finden Sie unter CreateDialogIndirectParam.
&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.
Übersicht über Dialogfelder, Dialogfeld Feld Funktionen, CreateWindowEx, DialogBox, DialogBoxIndirect, DialogBoxParam, DialogProc DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT