问题: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);//所以要进行切换