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

1. DialogBoxParam()函数介绍


  1. 模式对话框与非模式对话框:
    <1>.模式对话框: 窗口打开后, 关闭前父窗口是不能使用的, 必须要对话框关闭以后,函数才会返回调用生成对话框语句的下一句.
    <2>.非模式对话框: 作为一个独立窗口打开的, 不会影响父窗口的状态, 在不关闭的情况下也能返回下一句程序位置.
  2. ::DialogBoxParam()功能(::表示函数为全局作用域):
    创建模式对话框.
  3. 参数介绍:
    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.调用流程


  1. 在DLLMain中主窗口建立后,对话框句柄hModule保存备用:

    BOOL APIENTRY DllMain( HANDLE hModule,//系统加载动态库实例句柄
                    DWORD  ul_reason_for_call,//系统调用动态库原因
                    LPVOID lpReserved//保留字,该参数无作用
                     )
    {
    g_hModule = hModule;
    return TRUE;
    }
  2. 获取父窗口并创建对话框:

    HWND hParentWnd = GetForegroundWindow();
    int iResult = ::DialogBoxParam((HINSTANCE)g_hModule, (char*)IDD_TZDLG, hParentWnd, GetFeatureDlg, (LPARAM)&param)
    

    对话框关闭前结果保留在返回值iResult中, 如果创建失败返回-1.
    GetForegroundWindow():得到用户正在激活的窗口.
    GetActiveWindow():返回线程的活动窗口,而不是系统的活动窗口, 注意区分.
    GetForegroundWindow()详细介绍
    DLLMAIN()详细介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值