您当前的位置: 首页 > 
  • 0浏览

    0关注

    483博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

VS2019 EXE程序如何链接(使用)DLL动态库中的资源控件如DialogBox

高精度计算机视觉 发布时间:2021-08-03 20:51:50 ,浏览量:0

 上一节讲到如何使用lib静态库中的资源,这里顺便再提一下动态库中的资源。

动态库相对于静态库就要容易多了,静态库实际上相当于EXE自身的一部分,在编译完生成的文件中要完全融入EXE,而动态库有自己的结构,在最后生成可执行文件后,还是作为一个独立的个体存在。

所以,静态库的资源ID号与EXE中的ID资源号是不能重复的,否则会出问题;而动态库中的资源ID号则可以完全不用顾忌EXE中的ID号。

DLL中的资源控件用使用起来几乎和EXE的完全一致,唯一不同的是,你必须使用DLL库的HMODULE;这个HMODULE和EXE中的HINSTANCE其实是同一个等级的东西,例如,在DLL中调用DialogBox你必须这样,

HMODULE g_module = NULL;

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH: g_module = hModule;  break;
    case DLL_THREAD_ATTACH:  break;
    case DLL_THREAD_DETACH:  break;
    case DLL_PROCESS_DETACH: break;
        break;
    }
    return TRUE;
}

这里,我们设置了一个全局变量g_module ,把这个动态库的HMODULE保存下来,然后,在动态库的程序中就可以这样使用了,

DialogBox(g_module, MAKEINTRESOURCE(IDD_DIALOG_OPERATION), NULL, SpaceVisionProc);

如果进一步,你需要在EXE的源码中调用DLL中的资源,那么,同样的道理,你必须使用DLL的handle。

关注
打赏
1661664439
查看更多评论
立即登录/注册

微信扫码登录

0.0351s