DialogBoxIndirectA 巨集 (winuser.h)
從記憶體中的對話框範本建立強制響應對話框。 DialogBoxIndirect 不會傳回控件,直到指定的回呼函式呼叫 EndDialog 函式終止強制回應對話框為止。
DialogBoxIndirect 會實作為呼叫 dialogBoxIndirectParam 函式的呼叫。
語法
void DialogBoxIndirectA(
[in, optional] hInstance,
[in] lpTemplate,
[in, optional] hWndParent,
[in, optional] lpDialogFunc
);
參數
[in, optional] hInstance
類型:HINSTANCE
建立對話框之模組的句柄。
[in] lpTemplate
類型:LPCDLGTEMPLATE
DialogBoxIndirect 用來建立對話框的範本。 對話框範本是由描述對話框的標頭所組成,後面接著一或多個描述對話框中每個控件的其他數據區塊。 範本可以使用標準格式或擴充格式。
在對話框的標準範本中,標頭是 DLGTEMPLATE 結構,後面接著其他可變長度陣列。 每個控件的數據都包含一個 DLGITEMTEMPLATE 結構,後面接著額外的可變長度數位。
在對話框的延伸範本中,標頭會使用 DLGTEMPLATEEX 格式,而控件定義則使用 DLGITEMTEMPLATEEX 格式。
[in, optional] hWndParent
類型:HWND
擁有對話框之視窗的句柄。
[in, optional] lpDialogFunc
類型:DLGPROC
對話框程式的指標。 如需對話框程式的詳細資訊,請參閱 DialogProc。
傳回值
沒有
言論
DialogBoxIndirect 巨集會使用 CreateWindowEx 函式來建立對話框。 DialogBoxIndirect 然後將 WM_INITDIALOG 訊息傳送至對話框程式。 如果範本指定 DS_SETFONT 或DS_SHELLFONT樣式,函式也會將 WM_SETFONT 訊息傳送至對話框程式。 函式會顯示對話框(不論範本是否指定 WS_VISIBLE 樣式)、停用擁有者視窗,並啟動自己的訊息循環來擷取和分派對話框的訊息。
當對話框程式呼叫 EndDialog 函式時,DialogBoxIndirect 終結對話框、結束訊息循環、啟用擁有者視窗(如果先前啟用),並在 呼叫 endDialog時傳回對話框程式所指定的 nResult 參數。
在標準對話框範本中,DLGTEMPLATE 結構,而且每個 DLGITEMTEMPLATE 結構都必須對齊 DWORD 界限。 DLGITEMTEMPLATE 結構的建立數據陣列也必須對齊 DWORD 界限。 範本中所有其他可變長度陣列都必須對齊 word 界限。
在擴充的對話框範本中,DLGTEMPLATEEX 標頭,而且每個 DLGITEMTEMPLATEEX 控件定義都必須對齊 DWORD 界限。 建立數據陣列,如果有的話,在 DLGITEMTEMPLATEEX 結構之後,也必須對齊 DWORD 界限。 範本中所有其他可變長度陣列都必須對齊 word 界限。
對話框範本中的所有字元字串,例如對話框和按鈕的標題,必須是 Unicode 字串。 使用 MultiByteToWideChar 函式,從 ANSI 字串產生 Unicode 字串。
例子
如需範例,請參閱 在記憶體中建立範本。
注意
winuser.h 標頭會將 DialogBoxIndirect 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winuser.h (包括 Windows.h) |
連結庫 | User32.lib |
DLL | User32.dll |
另請參閱
概念
其他資源
參考