2014-02-17 39 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