CreateDialogIndirectA 巨集 (winuser.h)
從記憶體中的對話框範本建立無模式對話框。 CreateDialogIndirect 巨集會使用 CreateDialogIndirectParam 函式。
語法
void CreateDialogIndirectA(
[in, optional] hInstance,
[in] lpTemplate,
[in, optional] hWndParent,
[in, optional] lpDialogFunc
);
參數
[in, optional] hInstance
類型:HINSTANCE
建立對話框之模組的句柄。
[in] lpTemplate
類型:LPCDLGTEMPLATE
CreateDialogIndirect 用來建立對話框的範本。 對話框範本是由描述對話框的標頭所組成,後面接著一或多個描述對話框中每個控件的其他數據區塊。 範本可以使用標準格式或擴充格式。
在標準範本中,標頭是 DLGTEMPLATE 結構,後面接著額外的可變長度陣列。 每個控件的數據都包含一個 DLGITEMTEMPLATE 結構,後面接著額外的可變長度數位。
在擴充的對話框範本中,標頭會使用 DLGTEMPLATEEX 格式,而控件定義則使用 DLGITEMTEMPLATEEX 格式。
CreateDialogIndirect 傳回之後,您可以釋放範本,此範本只會用來啟動對話方塊。
[in, optional] hWndParent
類型:HWND
擁有對話框之視窗的句柄。
[in, optional] lpDialogFunc
類型:DLGPROC
對話框程式的指標。 如需對話框程式的詳細資訊,請參閱 DialogProc。
傳回值
沒有
言論
CreateDialogIndirect 傳回之後,您可以使用 ShowWindow 函式來顯示對話框(如果尚未顯示)。 若要終結對話框,請使用 DestroyWindow 函式。 若要支援鍵盤流覽和其他對話方塊功能,對話框的訊息循環必須呼叫isDialogMessage 函式
在標準對話框範本中,DLGTEMPLATE 結構,而且每個 DLGITEMTEMPLATE 結構都必須對齊 DWORD 界限。 DLGITEMTEMPLATE 結構的建立數據陣列也必須對齊 DWORD 界限。 範本中所有其他可變長度陣列都必須對齊 word 界限。
在擴充的對話框範本中,DLGTEMPLATEEX 標頭,而且每個 DLGITEMTEMPLATEEX 控件定義都必須對齊 DWORD 界限。 建立數據陣列,如果有的話,在 DLGITEMTEMPLATEEX 結構之後,也必須對齊 DWORD 界限。 範本中所有其他可變長度陣列都必須對齊 word 界限。
對話框範本中的所有字元字串,例如對話框和按鈕的標題,必須是 Unicode 字串。 使用 MultiByteToWideChar 函式,從 ANSI 字串產生 Unicode 字串。
注意
winuser.h 標頭會將 CreateDialogIndirect 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winuser.h (包括 Windows.h) |
連結庫 | User32.lib |
DLL | User32.dll |
另請參閱
概念
其他資源
參考