多語言選單 dll純資源

2021-06-07 02:06:19 字數 1422 閱讀 1859

偶然在網上看到一片文章,覺得很不錯,拿來。原文如下:

解決國際化問題這的確是個老話重談了,因為這裡面確實也沒有什麼可以稱的上技術含量的,只是實現起來有點煩瑣,不過我還是要寫出來,希望剛接觸這方面的同行們不至於走太多的彎路。

由於mfc應用程式也有自己的資源檔案,當你呼叫mfc函式比如 cstring::loadstring 或其它 loadicon 時,mfc應用程式框架首先跟蹤搜尋exe檔案的資源,然後才是dll和mfc的資源,因此在使用純資源dll時候,必須人為先改變資源的搜尋順序,可以通過使用 afxsetresourcehandle 函式來實現,具體實現如下:

下面開始談談具體的實現步驟。

一、建立主工程

步驟:從專案中移出所有的資源檔案,把resource面板中的所有檔案移出,把fileview面板中的multilanguage.rc,resource.h,以及resource files下的所有檔案移出。(說明:移出的檔案並不是從實際的檔案目錄中刪除掉)

二、建立英文版的dll

步驟:刪除不需要的檔案:把resource面板中的所有檔案移出,把 fileview 面板中的english.rc,resource.h,以及resource files下的所有檔案移出,然後也可以從實際目錄中刪除掉;

複製相關的資源檔案:把multilanguage目錄下的multilanguage.rc,resource.h檔案複製到english工程檔案目錄下,還需要把 multilanguage/res 下的所有檔案複製到english/res目錄下(這樣操作起來簡單,當然你可以根據需要,選擇複製的檔案);

把3步複製的所有檔案新增到專案中去;

把所有的中文的資源名修改為相關的英文資源,同時需要把支援的語言改為「english(u.s.).",把project選單 setting 對話方塊中 resource 標籤的預設文字改為"english(u.s.).」,還需要在resource標籤下刪

除預處理定義中的"_afxdll"。這樣使用者的鏈結庫包含通用的mfc資源;

然後編譯建立動態鏈結庫就ok了;

三、建立中文版的dll

具體的方法同建立英文版的dll一樣,把專案名改為chinese.只是從 project 選單中選擇 setting… 選項。然後在link標籤下"project options" 新增 "/noentry" 選項。最後,編譯並建立動態鏈結庫。

四、修改 multilanguage工程

de>private:

bool m_bchinese;

hinstance m_hlangdll;    de>

建構函式中初始化:

在initinstance()函式修改資源載入順序:

別忘了exitinstance()函式釋放掉載入的dll資源

最後編譯執行! 小結

以上的方法實現了中英文軟體介面,不過,只要稍做擴充套件,很容易實現對多語言的支援。

純資源的dll檔案來實現多語言

在使用vc寫簡繁體通用程式時,對實現選單 介面 tooltips等的文字時無法實現通用。如果寫簡體和繁體各一套程式,那肯定不現實。查詢所有資料和文章都只能實現選單的多語言,且使用起來也不方便 並且無法實現介面 tooltips等的多語言。因而,採用純資源的dll檔案來實現多語言。純資源dll檔案實現...

MFC 設定多語言使用資源副本

1 選擇資源管理器,選到相應的介面或者menu,右鍵插入副本選擇想要的語言,這裡使用 英語 美國 為例 2 修改副本資源中控制項名稱 3 在相應的 前新增這個 setthreaduilanguage makelcid makelangid lang english,sublang english u...

軟體多語言

locale是指特定於某個國家或地區的一組設定,包括字符集,數字 貨幣 時間和日期的格式等。在windows中,每個locale可以用乙個32位數字表示,記作lcid。在winnt.h中可以看到lcid的組成。它的高16位表示字元的排序方法,一般為0。在它的低16位中,低10位是primary la...