【发布时间】:2012-03-14 06:33:56
【问题描述】:
我正在加载一个包含语言资源的附属 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 资源加载对话框吗?
【问题讨论】:
-
您的对话框是否不包含任何文本?为什么不翻译呢?
-
@MarkRansom 他们这样做了,我想从 OnInitDialog() 中的当前资源句柄加载文本。这样我的对话资源是共享的,只有文本被翻译。
-
有时布局需要改变,因为单词比英文长或短。但如果它对你有用,我不会抱怨。