DialogBoxParam()在动态库调用中创建模式对话框
生活随笔
收集整理的這篇文章主要介紹了
DialogBoxParam()在动态库调用中创建模式对话框
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. DialogBoxParam()函數介紹
<1>.模式對話框: 窗口打開后, 關閉前父窗口是不能使用的, 必須要對話框關閉以后,函數才會返回調用生成對話框語句的下一句.
<2>.非模式對話框: 作為一個獨立窗口打開的, 不會影響父窗口的狀態, 在不關閉的情況下也能返回下一句程序位置.
創建模式對話框.
int DialogBoxParam(HINSTANCE hInstance,LPCTSTR IpTemplateName,HWND hWndParent, DLGPROC IPDialogFunc,LPARAM dwlnitParam)
<1>.hlnstance:標識一個模塊的實例,該模塊的可執行文件含有對話框模板.
<2>.IpTemplateName:標識對話框模板.此參數可以指向一個以NULL結尾的字符串的指針,該字符串指定對話框模扳名,或是指定對話框模板的資源標識符的一個整型值。如果此參數指定了一個資源標識符,則它的高位字一定為零,且低位字一定含有標識符.一定用MAKEINTRESOURCE宏指令創建此值.
<3>.hWndParent:指定擁有對話框的窗口.
<4>.IpDialogFunc:指向對話框過程的指針.有關更詳細的關于對話框過程的信息,請參見DialogProc.
<5>.dwInitParam:指定傳遞到對話框過程中的 WM_INITDIALOG 消息 IParam 參數的值.
返回值:如果函數調用成功則返回值為在對函數EndDialog的調用中的nResult參數,該EndDialog函數用于中止對話框。如果函數調用失敗,則返回值為-1。若想獲得錯誤信息,請調用GetLastError函數.
2.調用流程
在DLLMain中主窗口建立后,對話框句柄hModule保存備用:
BOOL APIENTRY DllMain( HANDLE hModule,//系統加載動態庫實例句柄DWORD ul_reason_for_call,//系統調用動態庫原因LPVOID lpReserved//保留字,該參數無作用) { g_hModule = hModule; return TRUE; }獲取父窗口并創建對話框:
HWND hParentWnd = GetForegroundWindow(); int iResult = ::DialogBoxParam((HINSTANCE)g_hModule, (char*)IDD_TZDLG, hParentWnd, GetFeatureDlg, (LPARAM)¶m)對話框關閉前結果保留在返回值iResult中, 如果創建失敗返回-1.
GetForegroundWindow():得到用戶正在激活的窗口.
GetActiveWindow():返回線程的活動窗口,而不是系統的活動窗口, 注意區分.
GetForegroundWindow()詳細介紹
DLLMAIN()詳細介紹
總結
以上是生活随笔為你收集整理的DialogBoxParam()在动态库调用中创建模式对话框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言Dialogbox添加图片,c#
- 下一篇: 大学生 计算机 毕业设计 xx管理系统