我正在加载一个卫星DLL,其中包含语言资源。但是,我只想将字符串存储在dll中,而不是对话框资源。我加载DLL如下:如何从EXE加载资源而不是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资源加载对话框?
对话框不包含任何文字吗?为什么他们不会被翻译呢? – 2012-02-23 23:07:03
@MarkRansom他们这样做,我想从OnInitDialog()中的当前资源句柄中加载文本。这样我的对话框资源就被共享了,只有文本才会被翻译。 – zar 2012-02-24 02:05:34
有时候布局需要改变,因为单词比英语长或短。但如果它适合你,我不会抱怨。 – 2012-02-24 02:10:57