首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC 多語言選單實作:中英切換範例詳解

     編輯:關於VC++

前言

軟體國際化勢在必行。為應用程式加入多語言選單,不僅方便使用者,更利於產品推廣。本文以中英雙語選單為例,示範在 VC 中實現動態切換的完整流程。

中英選單切換效果

實作步驟

1. 建立專案與預設中文選單

專案語言選中文,其餘預設。資源編輯器中新增切換選單項 IDD_MENU_CHANGE。

2. 以文字模式編輯資源檔,複製並翻譯選單定義

打開 .rc 為文字,找到 IDR_MAINFRAME 選單區塊,完整複製一份並改為英文資源 IDR_MAINFRAME_ENGLISH:

IDR_MAINFRAME_ENGLISH MENU PRELOAD DISCARDABLE
BEGIN
    POPUP "File(&F)"
    BEGIN
        MENUITEM "New(&N)\tCtrl+N", ID_FILE_NEW
        MENUITEM "Open(&O)...\tCtrl+O", ID_FILE_OPEN
        ...
        MENUITEM "Chinese", ID_MENU_CHANGE
    END
    POPUP "Edit(&E)" ...
    POPUP "View(&V)" ...
    POPUP "Help(&H)" ...
END

儲存資源檔。

3. 主框架類別新增成員變數

CMenu m_englistmenu, m_chinesemenu;
enum { e, c } m_current; // 當前語言

4. 建構函式與 OnCreate 初始化

CMainFrame::CMainFrame() : m_current(c) {} // 預設中文

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    // ...
    m_englistmenu.LoadMenu(_T("IDR_MAINFRAME_ENGLISH")); // 載入英文選單
    HMENU hMenu = ::GetMenu(m_hWnd); // 取得預設中文選單
    m_chinesemenu.Attach(hMenu);     // 保存中文選單
    return 0;
}

5. 切換處理函數

void CMainFrame::OnMenuChange()
{
    if (m_current == e)
    {
        SetMenu(&m_chinesemenu);
        m_current = c;
    }
    else
    {
        SetMenu(&m_englistmenu);
        m_current = e;
    }
}

編譯運行

編譯執行,即可在「檢視」選單中點擊「英文」/「Chinese」動態切換語言,命令 ID 保持不變,功能邏輯零修改。

擴充建議

  • 若需支援更多語言,依樣畫葫蘆新增資源 ID 並擴充 enum。
  • 可將當前語言寫入註冊表/INI,下次啟動自動恢復。
  • 工具列按鈕文字、對話框字串同理可用資源 DLL 或字串表切換實現完整本地化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved