如何从exe而不是DLL加载资源

时间:2012-02-23 19:44:05

标签: dll mfc

我正在加载一个保存语言资源​​的卫星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资源加载对话框?

2 个答案:

答案 0 :(得分:0)

我们拥有庞大的资源应用程序。每当您想要更改MFC查找资源的位置的上下文时,您都可以使用AfxSetResourceHandle()。我们有一个基于堆栈的对象,允许我们设置资源句柄然后恢复它。 AfxGetResourceHandle()是获取当前值的函数。

答案 1 :(得分:0)

您可以自己从.exe资源加载对话框模板,然后调用InitModalIndirect将其绑定到对话框对象。 DoModal将使用此资源,而不是尝试从当前资源句柄加载一个资源。

相关问题