隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,軟件的交流越來越頻繁,軟件的國(guó)際化已成為一個(gè)軟件開發(fā)人員不可回避的一個(gè)問題。所謂軟件的國(guó)際化,就是讓軟件界面支持多種語言,從而可以被很多國(guó)家的人使用。為了使應(yīng)用程序支持多種語言,一個(gè)很好的辦法就是使用動(dòng)態(tài)鏈接庫(kù),將不同的語言資源放入不同的庫(kù)中,根據(jù)需要程序加載不同的動(dòng)態(tài)庫(kù),從而實(shí)現(xiàn)程序的國(guó)際化。但是這種方法實(shí)現(xiàn)起來不很方便,對(duì)軟件開發(fā)人員要求較高,不適宜初學(xué)者。為了解決這個(gè)問題,以實(shí)現(xiàn)多語言菜單為例,筆者介紹在VC編程中一種簡(jiǎn)單實(shí)現(xiàn)方法,從而實(shí)現(xiàn)軟件的國(guó)際化支持。 在VC6.0中生成一個(gè)單文檔應(yīng)用程序,其它采用默認(rèn)項(xiàng)目,項(xiàng)目生成后,默認(rèn)的菜單為中文,為了使菜單支持別的語言,用文本形式打開項(xiàng)目中的資源文件(.rc文件),找到項(xiàng)目中的菜單文本內(nèi)容如下: IDR_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 "Print Preview(&V)", ID_FILE_PRINT_PREVIEW MENUITEM "Print Setting(&R)...", ID_FILE_PRINT_SETUP MENUITEM SEPARATOR MENUITEM "Recent Files", ID_FILE_MRU_FILE1, GRAYED MENUITEM SEPARATOR MENUITEM "Exit(&X)", ID_APP_EXIT END ....................................... END 將上述內(nèi)容復(fù)制一份,拷貝到該資源文件的后面,將上面內(nèi)容的第一行修改為“IDR_MAINFRAME_ENGLISH MENU PRELOAD DISCARDABLE”,這樣作也就是為英文菜單起了一個(gè)叫“IDR_MAINFRAME_ENGLISH”的名字。最后將拷貝內(nèi)容的每一項(xiàng)目中的MENUITEM部分改為英文即可,例如,對(duì)于“文件/打開”菜單來說,修改為“MENUITEM "Open(&O)...tCtrl+O", ID_FILE_OPEN”,對(duì)資源文件中后續(xù)拷貝的每一個(gè)菜單項(xiàng)修改后,保存資源。下面要作的是在程序的CMainFrame類中加入變量CMenu m_CurrentMenu對(duì)象,用來裝載中文或英文菜單資源;另外,還需要加入枚舉變量enum Enum{e,c}m_Current,并給它一個(gè)初始值"c",當(dāng)m_Current等于 "c"時(shí)說明項(xiàng)目選用中文菜單,等于"e"時(shí)說明項(xiàng)目選擇了英文菜單。 下面在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中添加代碼實(shí)現(xiàn)裝入英文菜單資源 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ..................................//加載工具條和狀態(tài)條的代碼; if(m_Current= = c) m_CurrentMenu.LoadMenu("IDR_MAINFRAME_ENGLISH"); else m_CurrentMenu.LoadMenu(IDR_MAINFRAME); SetMenu(&m_englistmenu);//設(shè)置界面菜單; return 0; } 開發(fā)人員可以通過設(shè)置m_Current的不同值,將程序編譯成不同的語言版本,上述代碼在Windows 98和Visual C++6.0編譯環(huán)境下通過測(cè)試,實(shí)現(xiàn)了多語言菜單,有興趣的讀者可以自己上機(jī)試一試。 (合肥 劉濤)
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!