精品理论电影在线_日韩视频一区二区_一本色道精品久久一区二区三区_香蕉综合视频

通過ini實現(xiàn)多語言菜單

發(fā)布時間:2011-09-16 共2頁

  從前看過vc知識庫上一篇《實現(xiàn)多語言菜單》的文章。那篇文章里采用的方法是在資源里定義兩個菜單,一個英文,一個中文...

  要是程序要作成100國語言的用那種方法就十分不妥了。原因是軟件作者不可能會100國語言....最主要的是那樣十分不方便!

  最好的辦法就是把菜單存到ini文件里,由用戶自行定義菜單(要改成什么就改成什么)。

  下面111222嘗試用ini儲存菜單做了一個演示工程。實現(xiàn)了通過ini修改菜單項,通過這個你可以輕松的修改菜單的語言,內(nèi)容,更主要的是你可以把這些工作交給熱心的用戶....當然,這只是簡單的實現(xiàn),還存在兩個問題,希望你能夠幫我完善它。

  首先,要修改菜單項,你要熟悉CMenu的幾個函數(shù)。

  GetMenuItemCount();

  //獲取菜單項數(shù)目

  GetMenuItemID(UNIT i);

  //獲取菜單項i的ID,這里ID為0代表分割線,-1為POPUP菜單項。

  GetMenuString( UINT nIDItem, CString& rString, UINT nFlags );

  //獲取菜單項的字符串

  ModifyMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );

  //修改菜單項,這里我們主要是修改第4個參數(shù),改變菜單的文字。

  接下來我寫了一個函數(shù),利用遞歸遍歷所有的菜單項按照ini文件的設置修改菜單項:

  //函數(shù)聲明 MainFrm.h

  void InitMenu(CMenu* menu);

  /////////////////////////////////////////////////

  //功能:多語言菜單 MainFrm.cpp

  //原理:遍歷菜單項,替換菜單項文字為ini文件中的對應值

  //// by 111222 9月13日

  /////////////////////////////////////////////////

  void CMainFrame::InitMenu(CMenu* menu)

  {

  if(menu==NULL)

  return;

  int nCount = menu->GetMenuItemCount();//獲取該層菜單數(shù)

  for(int i=0;i<nCount;i++)//遍歷所有菜單項

  {

  int id = menu->GetMenuItemID(i);//查看菜單屬性,id=0為分割線,-1為popup菜單

  if(id==0)

  {}

  else if(id==-1)

  {

  CString strText;

  menu->GetMenuString (i, strText, MF_BYPOSITION);//獲取菜單文字

百分百考試網(wǎng) 考試寶典

立即免費試用