DialogBoxIndirectParamA 函式 (winuser.h)

從記憶體中的對話框範本建立強制響應對話框。 在顯示對話方塊之前,函式會將應用程式定義的值傳遞至對話框程式,作為WM_INITDIALOG訊息的 lParam 參數。 應用程式可以使用此值來初始化對話框控制件。

語法

INT_PTR DialogBoxIndirectParamA(
  [in, optional] HINSTANCE       hInstance,
  [in]           LPCDLGTEMPLATEA hDialogTemplate,
  [in, optional] HWND            hWndParent,
  [in, optional] DLGPROC         lpDialogFunc,
  [in]           LPARAM          dwInitParam
);

參數

[in, optional] hInstance

類型: HINSTANCE

建立對話框之模組的句柄。

[in] hDialogTemplate

類型: LPCDLGTEMPLATE

DialogBoxIndirectParam 用來建立對話框的範本。 對話框範本是由描述對話框的標頭所組成,後面接著一或多個其他數據區塊,這些區塊會描述對話框中每個控件。 範本可以使用標準格式或擴充格式。

在對話框的標準範本中,標頭是 DLGTEMPLATE 結構,後面接著額外的可變長度陣列。 每個控件的數據都包含 DLGITEMTEMPLATE 結構,後面接著額外的可變長度數位。

在對話框的擴充範本中,標頭會使用 DLGTEMPLATEEX 格式,而控件定義會使用 DLGITEMTEMPLATEEX 格式。

[in, optional] hWndParent

類型: HWND

擁有對話框之視窗的句柄。

[in, optional] lpDialogFunc

類型: DLGPROC

對話框程式的指標。 如需對話框程式的詳細資訊,請參閱 DialogProc

[in] dwInitParam

類型: LPARAM

要傳遞至WM_INITDIALOG訊息之 lParam 參數中對話框的值。

傳回值

類型: INT_PTR

如果函式成功,傳回值就是呼叫 EndDialog 函式時所指定的 nResult 參數,用來終止對話方塊。

如果函式因為 hWndParent 參數無效而失敗,則傳回值為零。 在此案例中,函式會傳回零,以便與舊版 Windows 相容。 如果函式因任何其他原因而失敗,則傳回值為 –1。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

DialogBoxIndirectParam 函式會使用 CreateWindowEx 函式來建立對話框。 DialogBoxIndirectParam 接著 會將WM_INITDIALOG 訊息傳送至對話框程式。 如果範本指定 DS_SETFONT 或DS_SHELLFONT樣式,函式也會將 WM_SETFONT 訊息傳送至對話框程式。 函式會顯示對話框 (,不論範本是否指定 WS_VISIBLE 樣式) 、停用擁有者視窗,以及啟動自己的訊息循環來擷取和分派對話框的訊息。

當對話框過程呼叫 EndDialog 函式時,DialogBoxIndirectParam 會終結對話框、結束訊息迴圈、如果先前啟用) ,則會啟用擁有者視窗 (,並在呼叫 EndDialog 時傳回對話框程式所指定的 nResult 參數。

在標準對話框範本中, DLGTEMPLATE 結構和每個 DLGITEMTEMPLATE 結構都必須在 DWORD 界限上對齊。 在 DLGITEMTEMPLATE 結構後面的建立數據陣列也必須對齊 DWORD 界限。 範本中的所有其他可變長度陣列都必須對齊 WORD 界限。

在擴充對話框範本中, DLGTEMPLATEEX 標頭和每個 DLGITEMTEMPLATEEX 控件定義都必須對齊 DWORD 界限。 如果有任何,在 DLGITEMTEMPLATEEX 結構後面的建立數據陣列也必須對齊 DWORD 界限。 範本中的所有其他可變長度陣列都必須對齊 WORD 界限。

對話框範本中的所有字元字串,例如對話框和按鈕的標題,必須是 Unicode 字串。

注意

winuser.h 標頭會將 DialogBoxIndirectParam 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-dialogbox-l1-1-0 (於 Windows 8)

另請參閱

概念

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

對話框

DialogBox

DialogBoxIndirect

DialogBoxParam

DialogProc

EndDialog

參考

WM_INITDIALOG

WM_SETFONT