我正在加载一个保存语言资源的卫星dll。但是我只想在dll中存储字符串而不是对话框资源。我按如下方式加载dll:
hInst = LoadLibrary( _T("MyAppFRA.dll") );
if (hInst!= NULL)
AfxSetResourceHandle( hInst );
问题是如果我现在带来一个CTestDlg,它永远不会出现。
CTestDlg dlg;
dlg.DoModal()
这是因为对话框资源IDD_DIALOG1在exe中而不在dll中,所以DoModal()似乎无法找到它(作为AfxSetResourceHandle()
调用的结果。)这是故意的,我想如果它没有在dll中找到资源,它将自动查找exe但似乎并非如此。
当我的其余资源在dll中时,是否可以从exe资源加载对话框?
答案 0 :(得分:0)
我们拥有庞大的资源应用程序。每当您想要更改MFC查找资源的位置的上下文时,您都可以使用AfxSetResourceHandle()。我们有一个基于堆栈的对象,允许我们设置资源句柄然后恢复它。 AfxGetResourceHandle()是获取当前值的函数。
答案 1 :(得分:0)
您可以自己从.exe资源加载对话框模板,然后调用InitModalIndirect
将其绑定到对话框对象。 DoModal
将使用此资源,而不是尝试从当前资源句柄加载一个资源。