0

我正在研究由许多项目组成的 MFC 解决方案。我的一个项目“App.exe”依赖于其他项目输出 dll “SC.dll”。

我通过 App 项目下的 Add Reference 选项添加了对另一个项目的引用。

我想通过使用资源 dll 在语言之间“基于选项”切换。我有另一个资源项目,它产生阿拉伯语资源“SC_AR.dll”。

我尝试根据选项使用 LoadLibrary,但失败了。

  1. “添加参考”的方法是错误的吗?
  2. 如果没有,我如何在 Dll 之间切换?
  3. 如果是,那么正确的做法是什么?
4

3 回答 3

2

无需参考资源卫星。MFC 使用用户的 Windows UI 语言和应用程序的文件名搜索附属 DLL。要切换到另一个卫星,请调用 LoadLibrary(),然后调用 AfxSetResourceHandle()。

当然,这是假设您通过 MFC 加载所有资源(例如,使用 CString::LoadString 而不是 LoadResource )。如果直接调用 API,则必须显式使用自己的附属 DLL 句柄。

PS关于 SetThreadLocale的说法越少越好。

于 2013-01-13T19:26:06.840 回答
0

如果您使用的是 MFC,则资源 dll 将加载到主文件中生成的样板文件中。(不能随便记住它)但搜索 LoadResource()。您必须调用 LoadLibrary 才能让 hmodule 传递给它。

请注意,如果您要显示来自多个 dll 的资源,则必须小心不同资源 dll 中的对话框。如果您只是交换 dll,则不会有问题。

于 2013-01-13T14:49:08.257 回答
0

由于 MFC 不支持阿拉伯语,我在 dll 中制作了一个英文对话框和一个阿拉伯语对话框。并根据 Language 属性将资源 ID 发送给 Dialog 的构造函数。对于任何字符串,我使用 LoadString

于 2013-01-17T13:54:59.723 回答