国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
用VC 打造有多語言菜單的應(yīng)用程序

用VC++打造有多語言菜單的應(yīng)用程序



  隨著計算機(jī)技術(shù)的快速發(fā)展,軟件的交流越來越頻繁,軟件的國際化已成為一個軟件開發(fā)人員不可回避的一個問題。所謂軟件的國際化,就是讓軟件界面支持多種語言,從而可以被很多國家的人使用。為了使應(yīng)用程序支持多種語言,一個很好的辦法就是使用動態(tài)鏈接庫,將不同的語言資源放入不同的庫中,根據(jù)需要程序加載不同的動態(tài)庫,從而實現(xiàn)程序的國際化。但是這種方法實現(xiàn)起來不很方便,對軟件開發(fā)人員要求較高,尤其是對于初學(xué)者,難度較大。為了解決這個問題,以實現(xiàn)多語言菜單為例,筆者介紹在VC編程中一種簡單實現(xiàn)方法,從而實現(xiàn)軟件的國際化支持。下圖一給出了中英文菜單的應(yīng)用程序界面:


(a)中文菜單

(b)英文菜單
圖一、多語言菜單支持的應(yīng)用程序

  一、實現(xiàn)方法

  假如Visual C++6.0中生成的應(yīng)用程序默認(rèn)的菜單為中文,我們?yōu)榱耸箲?yīng)用程序的菜單支持英文,首先需要給應(yīng)用程序添加英文菜單,讀者朋友首先想到的可能是利用Visual C++提供的資源編輯器,這種方法當(dāng)然可行,但是還有一種更方便更快捷的方法。首先用Windows的小程序"記事本"以文本的形式打開項目中的資源文件(.rc文件),找到項目中的菜單文本,內(nèi)容如下:

IDR_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "文件(&F)"
BEGIN
MENUITEM "新建(&N)\tCtrl+N", ID_FILE_NEW
MENUITEM "打開(&O)...\tCtrl+O", ID_FILE_OPEN
MENUITEM "保存(&S)\tCtrl+S", ID_FILE_SAVE
MENUITEM "另存為(&A)...", ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "打印(&P)...\tCtrl+P", ID_FILE_PRINT
MENUITEM "打印預(yù)覽(&V)", ID_FILE_PRINT_PREVIEW
MENUITEM "打印設(shè)置(&R)...", ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "最近文件", ID_FILE_MRU_FILE1,GRAYED
MENUITEM SEPARATOR
MENUITEM "退出(&X)", ID_APP_EXIT
END
POPUP "編輯(&E)"
BEGIN
MENUITEM "撤消(&U)\tCtrl+Z", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "剪切(&T)\tCtrl+X", ID_EDIT_CUT
MENUITEM "復(fù)制(&C)\tCtrl+C", ID_EDIT_COPY
MENUITEM "粘貼(&P)\tCtrl+V", ID_EDIT_PASTE
END
POPUP "查看(&V)"
BEGIN
MENUITEM "工具欄(&T)", ID_VIEW_TOOLBAR
MENUITEM "狀態(tài)欄(&S)", ID_VIEW_STATUS_BAR
END
POPUP "幫助(&H)"
BEGIN
MENUITEM "關(guān)于 MutiLanguageMenu(&A)...", ID_APP_ABOUT
END
END

  將上述內(nèi)容復(fù)制一份,拷貝到該資源文件的后面,并將上面內(nèi)容的第一行修改為"IDR_English_MAINFRAME MENU PRELOAD DISCARDABLE",這樣作也就是為英文菜單起了一個叫"IDR_MAINFRAME_ENGLISH"的名字。最后將各個菜單項目的中文說明修改為英文說明,內(nèi)容如下:

"IDR_Englishi_MAINFRAME 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 "Save(&S)\tCtrl+S", ID_FILE_SAVE
MENUITEM "Save As(&A)...", ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "Print(&P)...\tCtrl+P", ID_FILE_PRINT
MENUITEM "PrintView(&V)", ID_FILE_PRINT_PREVIEW
MENUITEM "Print Setup(&R)...", ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "Recent Files", ID_FILE_MRU_FILE1,GRAYED
MENUITEM SEPARATOR
MENUITEM "Exit(&X)", ID_APP_EXIT
END
POPUP "Edit(&E)"
BEGIN
MENUITEM "Undo(&U)\tCtrl+Z", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cut(&T)\tCtrl+X", ID_EDIT_CUT
MENUITEM "Copy(&C)\tCtrl+C", ID_EDIT_COPY
MENUITEM "Paste(&P)\tCtrl+V", ID_EDIT_PASTE
END
POPUP "View(&V)"
BEGIN
MENUITEM "ToolBar(&T)", ID_VIEW_TOOLBAR
MENUITEM "StatusBar(&S)", ID_VIEW_STATUS_BAR
END
POPUP "Help(&H)"
BEGIN
MENUITEM "About MutiLanguageMenu(&A)...", ID_APP_ABOUT
END
END

  修改過程序的資源文件并存盤退出后,接著要作的是在程序的CMainFrame類中加入變量CMenu m_CurrentMenu對象,用來根據(jù)需要裝載中文或英文菜單資源。CMenu類是MFC提供的管理菜單的類,該類的LoadMenu()函數(shù)來裝載菜單資源,函數(shù)的原型如下:

BOOL LoadMenu( UINT nIDResource );

  函數(shù)中的參數(shù)nIDResource是菜單資源的ID號。如果函數(shù)調(diào)用成功返回"TRUE",否則返回"FLASE"。

  菜單資源裝載后,需要將該菜單設(shè)置為程序的當(dāng)前菜單,這需要使用CWnd類的SetMenu()函數(shù),該函數(shù)的原型如下:

BOOL SetMenu( CMenu* pMenu );

  函數(shù)中的參數(shù)為一個指向菜單對象的指針。如果函數(shù)調(diào)用成功返回"TRUE",否則返回"FLASE"。

  另外,為了能夠動態(tài)的設(shè)置程序的菜單,還需要加入枚舉變量enum Enum{e,c}m_Current。例如,如果當(dāng)前需要將程序設(shè)置為"中文菜單",可以給m_Current一個初始值"c",如果該變量等于:"e"時說明項目選擇了英文菜單。

  二、編程步驟

  1、 啟動Visual C++6.0,生成一個單文檔視圖結(jié)構(gòu)的程序,命名為"MutiLanguageMenu";

  2、 啟動Widows的"記事本"程序,修改程序的資源文件;

  3、 給應(yīng)用程序的CmainFrame類添加CMenu類對象m_CurrentMenu以及枚舉變量enum Enum{e,c}m_Current;
 
  4、 添加代碼,編譯運行程序。

  三、程序代碼

/////////////////////////////////////////////////////////
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  return -1;
 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |
CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS |
CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
 {
  TRACE0("Failed to create toolbar\n");
  return -1; // fail to create
 }
 if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status bar\n");
  return -1; // fail to create
 }
 // TODO: Delete these three lines if you don't want the toolbar to
 // be dockable
 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
 EnableDocking(CBRS_ALIGN_ANY);
 DockControlBar(&m_wndToolBar);
 if(m_Current==c)
  m_CurrentMenu.LoadMenu(IDR_MAINFRAME);
 else
  m_CurrentMenu.LoadMenu("IDR_English_MAINFRAME");
  SetMenu(&m_CurrentMenu);//設(shè)置界面菜單;
 return 0;
}

  四、小結(jié)

  本實例中的代碼通過設(shè)置m_Current的不同值,將程序編譯成不同的語言版本。其實還可以在程序中添加菜單來讓用戶動態(tài)的改變程序的菜單,具體實現(xiàn)方法讀者朋友們讀到這兒應(yīng)該不會再有什么疑惑了。另外,對于程序的動態(tài)菜單的實現(xiàn),還有一種簡單的實現(xiàn)方法是隨應(yīng)用程序發(fā)行一個文本文件,程序根據(jù)不容的需要從該文本文件中讀取不同的字符串資源,然后將所讀取的字符串做為"標(biāo)題"賦給相應(yīng)的菜單項。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MFC – 通過spy++查找應(yīng)用程序菜單對應(yīng)函數(shù)的方法 | 學(xué)步園
MFC如何查看菜單里各個選項對應(yīng)的響應(yīng)函數(shù)
android 上下文菜單Context Menu
MTK6252_10A添加資源
VC 在對話框中增加菜單欄
vc實現(xiàn)系統(tǒng)托盤圖標(biāo)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服