日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DialogBoxParam()在动态库调用中创建模式对话框

發布時間:2024/8/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DialogBoxParam()在动态库调用中创建模式对话框 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. DialogBoxParam()函數介紹


  • 模式對話框與非模式對話框:
    <1>.模式對話框: 窗口打開后, 關閉前父窗口是不能使用的, 必須要對話框關閉以后,函數才會返回調用生成對話框語句的下一句.
    <2>.非模式對話框: 作為一個獨立窗口打開的, 不會影響父窗口的狀態, 在不關閉的情況下也能返回下一句程序位置.
  • ::DialogBoxParam()功能(::表示函數為全局作用域):
    創建模式對話框.
  • 參數介紹:
    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)&param)

    對話框關閉前結果保留在返回值iResult中, 如果創建失敗返回-1.
    GetForegroundWindow():得到用戶正在激活的窗口.
    GetActiveWindow():返回線程的活動窗口,而不是系統的活動窗口, 注意區分.
    GetForegroundWindow()詳細介紹
    DLLMAIN()詳細介紹

  • 總結

    以上是生活随笔為你收集整理的DialogBoxParam()在动态库调用中创建模式对话框的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。