问题:ResourceHandle默认的是InstanceHandle,所以使用Dll中的资源会失败。
解决:将ResourceHandle切换至动态库的实例句柄,使用资源完毕之后切换回当前实例句柄。
//从exe切换到dll,然后从dll切换到exe
HINSTANCE hExe = AfxGetResourceHandle();
HINSTANCE hDll = AfxGetInstanceHandle();
hDll = ::GetModuleHandleA("Toolkit.dll");
AfxSetResourceHandle(hDll);
CHelloDlg dlg;//对话框的资源位于动态库;
dlg.DoModal();//但加载资源时默认的是运行实例;
AfxSetResourceHandle(hExe);//所以要进行切换
本文介绍了解决Dll资源加载失败的问题,通过切换ResourceHandle至Dll实例句柄,成功加载Dll中的资源,并在使用完毕后切换回Exe实例句柄。
212

被折叠的 条评论
为什么被折叠?



