智慧屏安装APP的最佳实践与跨平台小程序开发的结合
1263
2022-09-16
VS2019 EXE程序如何链接(使用)DLL动态库中的资源控件如DialogBox
上一节讲到如何使用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。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~