函式
函式功能:該宏在記憶體中從對話框模板上創建一個無模式對話框。此宏使用CreateDialoglndirectParam 函式。
函式原型:HWND CreateDialoglndirect(HINSTANCE hlnstance,LPCDLGTEMPLATE IPTemplate,HWNDhWndParent,DLGPROC IPDialogFunc);參數:
hlnstance: 標識創建對話框的模組的事例。
IPTemplate: 指向含有一個模板的全局記憶體對象的指針。CreateDialoglndirect用此模板創建對話框。對話框模板由描述對話框的標題組成,跟隨著標題之後的是描述每一個控制的一個或多個數據塊,模板可以用標準格式或擴展格式。在標準模板中,標題是由DLGTEMPLATE結構跟隨一個變長數組組成。每個控制的數據是由DLGTEMPLATE結構跟隨一個變長數組組成。在擴展模板中,標題用DLGTEMPLATEEX格式,且控制定義用DLGITEMPLATEEX格式。CreatDialoglndirect函式返回後,可釋放模板,此模板僅用於啟動對話框。
hWndParent: 標識擁有對話框的視窗。
IpDialogFunc:指向對話框應用程式的指針,有關更多的對話框應用程式的指針,參見DialogProc。
返回值:如果函式調用成功,則返回值為指向對話框的句柄。如果函式調用失敗,則返回值為NULL。若想獲得更多錯誤信息,可調用GetLastError函式。
備註
備註:CreateDialOglndirect宏使用CreateWindowEx函式來創建對話框,然後該函式把一個WM_INITDIALOG訊息傳送到對話框應用程式,如果模板指定DS_SETFONT類型,則函式也把一個WM_SETFONT訊息傳送到對話框應用程式。如果模板指定WS_VISIBLE類型,則函式顯示對話框,最後CreateDialoglndirect返回指向對話框的視窗句柄。CreateDialoglndirect函式返回之後,可用 ShowWindow函式來顯示對話框(如果還沒有顯示)。用DestroyWindow函式來清除對話框。
在標準對話框模板中,DLGTEMPLATE結構和每一個DLGITEMTEMPLATE結構必須按DWORD邊界對齊,遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。
在擴展對話框模板上DLGTEMPLATEEX結構和每一個DLGITEMTEMPLATEEX結構必須按DWORD邊界對齊;遵循DLGEMTEPLATE結構而創建的數據數組也一定按DWORD邊界對齊。模板中其他所有變長數組一定要按DWORD邊界進行調整。
所有對話框模板的字元串,例如對話框和按鈕的標題,一定是Unicode字元串。使用
MltiByteToWidechar函式產生這些Unicode字元串可以創建在Windows和Windows NT兩種系統上工作的代碼。
Windows 95和以後版本:系統可支持每個對話框模板最多為255個控制。為把多於255個控制放入對話框,可以在WM_INITDLAIOG訊息處理器中創建控制,而不是把它們放入模板中。
Windows CE:lpTempate參數指向的對話框模板中,DLGTEMPLATE結構並不支持所有的類型。
速查:Windows NT:3.1 及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭檔案:Winuser.h;庫檔案:user32.lib;Unicode: 在Windows NT上實現為Unicode和ANSI兩種版本。