2013-06-21 60 views
0

我有幾個win32 DLL(非MFC)以及用於不同語言的各個.rc文件,目前我們替換rc文件併爲每個語言環境再次構建完整的DLL。 我想找出一個更好的方式來做到這一點,並發現MFC DLL的東西叫衛星DLL的,其中我們可以有單個DLL的代碼和其他資源DLL的單個RC文件。 但是這個資源/衛星DLL的解決方案似乎不適用於非MFC的dll。如何本地化一個win32(非MFC)DLL

有人可以告訴我什麼是最好的方式來本地化這種非MFC DLL,以便我們不需要爲每個單獨的區域設置重新生成完整的Dll。

在此先感謝 拉胡爾

+0

您需要將記錄您的Windows版本的要求,這是不是一個細節,如果XP仍然需要得到支持。對於Vista和MUI的支持是[這裏記錄](http://technet.microsoft.com/en-us/library/cc721887%28v=WS.10%29.aspx)。 –

回答

1

有沒有理由,你爲什麼不能做同樣的非MFC DLL的 - 我已經這樣做了很多次。

您只需創建一組僅用於資源的DLL,一組用於每種受支持的語言,以及(從您的主DLL)在運行時動態加載,或者爲它們提供所有相同的名稱,安裝。

This MSDN page描述瞭如何創建一個純資源的DLL。雖然它提到它對MFC有幫助,但根本沒有必要使用MFC - 您可以應用MFC使用的相同邏輯來決定要加載哪個衛星。

部分截圖

MSDN

+0

嗨羅傑,我已經試過了,並創建了一個dllNameKOR.dll,但是當我把這個DLL放在同一個文件夾中,並嘗試啓動我的產品韓版時,我仍然看到英文資源字符串,這意味着運行時無法加載資源dll * KOR.dll。我當然可以做LoadLibrary,但是我的DLL中有很多對話框,如果我做了LoadLibrary解決方案,那麼我將不得不以編程方式更改所有對話框/ UI按鈕的標題和大小(我想通過自動加載來避免) – Rahul

+0

@Rahul你必須*使用'LoadLibrary'並且你必須爲每種語言設計資源(包括對話模板) - 即使你使用MFC,你也不能跳過這一步。所有的MFC都是代表你處理'LoadLibrary'。 –

+0

嗨,羅傑,我把所有的資源和對話框模板分開在不同的rc文件中。那麼你的意思是我必須通過代碼將特定於區域的設置(x,y,寬度,高度和字幕字符串)應用於UI元素,而MFC不會自動執行此操作? – Rahul