2014-02-17 38 views
0

我刚刚看了一下在MFC本地化的文章在http://msdn.microsoft.com/en-us/library/8fkteez0,并有一个问题:MFC将如何加载字符串资源?

如果我创建一个名为MyApp.exe的应用程序,然后使德国本地化的资源DLL作为MyAppDeu.dll。 MyApp.exe中有两个字符串资源,即string1和string2。我制作一个德语版本的string1并将其放入MyAppDeu.dll中,但不要为string2制作德语版本。

然后在具有德语UI的系统中,当MyApp.exe启动时,MFC将为string1和string2执行什么操作?

感谢

艾伦

+0

当您尝试加载不存在的字符串时,它会崩溃。 –

回答

1

如果在一种方式,MFC核心undertannds这种语言将被用来命名。 CWinApp :: InitInstance调用一个名为LoadAppLangResourceDLL的函数。它根据当前系统语言或选定的MUI,用DEU,ENU ...搜索模块。

所以,如果你调用基类CWinApp :: InitInstance,一切都完成了。我不知道,因为什么MFC版本的工作。据我记得这是在VS-2008或VS-2005推出的...

详细说明:这个InitInstance设置内部资源句柄。资源从一个或多个模块加载,通过AfxSetResourceHandle定义。有一个函数AfxGetResourceHandle在执行任何Load ...函数之前使用。

但你仍有责任来设置

因此,所有的资源负载简单地重定向到另一个模块。这个词适用于每个MFC实例(DLL和EXE)。

+0

所以实际上它会加载string2时出现问题,因为MyAppDEU.dll被加载并且string2不存在于其中? – alancc

+0

是的,你会的。所有资源必须位于新的DLL中。我有一个特殊的程序,可以帮助我为本地化的DLL自定义和创建这样的RC文件。 – xMRi