我正在研究由许多项目组成的MFC解决方案。我的一个项目“App.exe”依赖于其他项目输出dll“SC.dll”。
我通过App项目下的Add Reference选项添加了对其他项目的引用。
我希望“基于选项”通过使用资源dll在语言之间切换。 我有另一个资源项目,它生成阿拉伯语资源“SC_AR.dll”。
我尝试使用基于该选项的LoadLibrary,但它失败了。
答案 0 :(得分:2)
无需引用resource satellite。 MFC使用用户的Windows UI语言和应用程序的文件名搜索附属DLL。要切换到另一个卫星,请调用LoadLibrary(),然后调用AfxSetResourceHandle()。
当然,这假设您正在通过MFC加载所有资源(例如,使用CString :: LoadString而不是LoadResource)。如果直接调用API,则必须明确使用自己的附属DLL句柄。
答案 1 :(得分:0)
如果您正在使用MFC,则资源dll将加载到主文件中生成的样板中。 (不能随便记住它)但是搜索LoadResource()。您必须调用LoadLibrary才能将hmodule传递给它。
请注意,如果您正在显示来自多个dll的资源,则必须注意不同资源dll中的对话框。如果你只是简单地交换dll,你就不会有问题。
答案 2 :(得分:0)
由于MFC不支持阿拉伯语,我在dll中创建了一个英语对话框和阿拉伯语对话框。根据Language属性,我将资源ID发送给Dialog的构造函数。 对于任何String我使用LoadString