在 MFC SDI 程序中实现多语言程序界面
生活随笔
收集整理的這篇文章主要介紹了
在 MFC SDI 程序中实现多语言程序界面
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 把 Language.h/cpp 加入到工程的,在 cpp 中 #include "StdAfx.h"。 定義一個全局變量 g_hInst,在 InitInstance() 中使它賦值為資源模塊句柄 (一般為 theApp.m_hInstance)。 InitInstance() 中 調用 CLanguage::Initialize() 確定當前要使用的語言。 CMainFrame::OnCreate() 中調用 CLanguage::TranslateMenu() 翻譯主菜單。 重載 CFrameWnd::GetMenuString(),用 CLanguage::TranslateString() 替換它的 AfxLoadString() 載入資源字符串。 每個對話框的 OnInitdialog() 中調用??CLanguage::TranslateDialog() 翻譯對話框。 其它與 Win32 工程一樣……
下載: SdiML (34K,Visual C++ 6 項目)
今天舉個例子,說說怎樣使用?CLanguage 類,在 MFC SDI 程序中實現多語言程序界面。
因為 MFC 包裝了一些字符串顯示處理,所以與 Win32 工程中可能有一點點不一樣。主要有兩個地方:
- 因為語言列表菜單項是動態生成的,MFC 的機制導致這些菜單項是不可用的。所以必須在 Update Command UI 的時候,使語言列表菜單項可用。
- 菜單提示是 CFrameWnd 實現的,我們必須重載他的 GetMenuString(),用 CLanguage 的 TranslateString() 替換它的 AfxLoadString() 載入資源字符串。
下面說說簡要的步驟吧:
另外,如果在 MDI 中使用,可能稍有不一樣,因為我在另一篇文章中說過,Popup Menu 的 位置不能改變。所以,每次切換語言的時候,必須使所有的 MDI 子窗口不要最大化 (因為最大化會在主菜單中加入一個圖標菜單,那樣 Popup 位置就變了)……
看代碼吧……
總結
以上是生活随笔為你收集整理的在 MFC SDI 程序中实现多语言程序界面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 印象
- 下一篇: 编辑器FreeTextBox升级至3.0