Freigeben über


DialogBoxIndirectW-Makro (winuser.h)

Erstellt ein modales Dialogfeld aus einer Dialogfeldvorlage im Arbeitsspeicher. DialogBoxIndirect gibt die Steuerung erst zurück, wenn die angegebene Rückruffunktion das modale Dialogfeld durch Aufrufen der EndDialog-Funktion beendet.

DialogBoxIndirect wird als Aufruf der Funktion DialogBoxIndirectParam implementiert.

Syntax

void DialogBoxIndirectW(
  [in, optional]  hInstance,
  [in]            lpTemplate,
  [in, optional]  hWndParent,
  [in, optional]  lpDialogFunc
);

Parameter

[in, optional] hInstance

Typ: HINSTANCE

Ein Handle für das Modul, das das Dialogfeld erstellt.

[in] lpTemplate

Typ: LPCDLGTEMPLATE

Die Vorlage, die DialogBoxIndirect zum Erstellen des Dialogfelds verwendet. Eine Dialogfeldvorlage besteht aus einem Header, der 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 für ein Dialogfeld 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 mit variabler Länge.

In einer erweiterten Vorlage für ein Dialogfeld verwendet der Header das DLGTEMPLATEEX-Format , und die Steuerelementdefinitionen verwenden das DLGITEMTEMPLATEEX-Format .

[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.

Rückgabewert

Keine

Bemerkungen

Das Makro DialogBoxIndirect verwendet die CreateWindowEx-Funktion , um das Dialogfeld zu erstellen. DialogBoxIndirect sendet dann eine WM_INITDIALOG Nachricht an die Dialogfeldprozedur. Wenn die Vorlage die DS_SETFONT oder DS_SHELLFONT Stil angibt, sendet die Funktion auch eine WM_SETFONT Nachricht an die Dialogfeldprozedur. Die Funktion zeigt das Dialogfeld an (unabhängig davon, ob die Vorlage das WS_VISIBLE-Format angibt), deaktiviert das Besitzerfenster und startet eine eigene Nachrichtenschleife, um Nachrichten für das Dialogfeld abzurufen und zu senden.

Wenn die Dialogfeldprozedur die EndDialog-Funktion aufruft, zerstört DialogBoxIndirect das Dialogfeld, beendet die Nachrichtenschleife, aktiviert das Besitzerfenster (sofern zuvor aktiviert), und gibt den nResult-Parameter zurück, der von der Dialogfeldprozedur beim Aufruf von EndDialog angegeben wurde.

In einer Standarddialogfeldvorlage müssen die DLGTEMPLATE-Struktur und jede DLGITEMTEMPLATE-Struktur an DWORD-Grenzen ausgerichtet werden. Das Erstellungsdatenarray, das einer DLGITEMTEMPLATE-Struktur folgt, muss auch an einer DWORD-Grenze ausgerichtet werden. Alle anderen Arrays mit variabler Länge in der Vorlage müssen an WORD-Grenzen ausgerichtet werden.

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 auch an einer DWORD-Grenze ausgerichtet werden. Alle anderen Arrays mit variabler Länge in der Vorlage müssen an WORD-Grenzen ausgerichtet werden.

Alle Zeichenfolgen in der Dialogfeldvorlage, z. B. Titel für das Dialogfeld und Schaltflächen, müssen Unicode-Zeichenfolgen sein. Verwenden Sie die MultiByteToWideChar-Funktion , um Unicode-Zeichenfolgen aus ANSI-Zeichenfolgen zu generieren.

Beispiele

Ein Beispiel finden Sie unter Erstellen einer Vorlage im Arbeitsspeicher.

Hinweis

Der winuser.h-Header definiert DialogBoxIndirect 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 nicht codierungsneutralem Code 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 (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll

Siehe auch

Konzept

Createwindowex

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

Dialogfelder

DialogBox

DialogBoxIndirectParam

DialogBoxParam

DialogProc

EndDialog

MultiByteToWideChar

Andere Ressourcen

Referenz

WM_INITDIALOG

WM_SETFONT