Windows下的Exe使用Dll中的资源

问题:ResourceHandle默认的是InstanceHandle,所以使用Dll中的资源会失败。

解决:将ResourceHandle切换至动态库的实例句柄,使用资源完毕之后切换回当前实例句柄。


//从exe切换到dll,然后从dll切换到exe
HINSTANCE hExe = AfxGetResourceHandle();
HINSTANCE hDll = AfxGetInstanceHandle();
hDll = ::GetModuleHandleA("KqGisFrame.dll");
AfxSetResourceHandle(hDll);
CHelloDlg dlg;//对话框的资源位于动态库;
dlg.DoModal();//但加载资源时默认的是运行实例;
AfxSetResourceHandle(hExe);//所以要进行切换


猜你喜欢

转载自blog.csdn.net/KnightOnHourse/article/details/80035945