通过ini实现多语言菜单

发布时间:2011-09-16 共2页

  CString cs = AfxGetApp()->GetProfileString("menu",strText,strText);//读取菜单项在ini里的文字

  menu->ModifyMenu(i,MF_STRING|MF_BYPOSITION,id,cs);

  //   下面这行可有可无,用这个免得我们手工编辑ini,发布的版本里注释掉

  AfxGetApp()->WriteProfileString("menu",strText,cs);

  CMenu* pSub = menu->GetSubMenu(i);

  InitMenu(pSub);//递归,遍历popup菜单

  }

  else

  {

  CString strText;

  menu->GetMenuString (i, strText, MF_BYPOSITION);

  CString cs = AfxGetApp()->GetProfileString("menu",strText,strText);

  menu->ModifyMenu(i,MF_STRING|MF_BYPOSITION,id,cs);

  //   下面这行可有可无,用这个免得我们手工编辑ini,发布的版本里注释掉

  AfxGetApp()->WriteProfileString("menu",strText,cs);

  }

  }

  }

  函数的调用:

  在CMainFrame::OnCreate的中填加上

  //multi language menu

  CMenu* pMenu = GetMenu();

  InitMenu(pMenu);

  至此通过ini实现多语言菜单结束了。

  具体可以看演示程序。

  menu.ini中储存着每个菜单项的文字,你只需要修改值就可以改换菜单语言。

  上面程序的不足:

  没能修改Prompt的文字(就是在状态栏上显示的提示)

  没能显示快捷键(菜单的为new\tCtrl N的话将不正常)

  编辑特别推荐:

  类成员函数的重载、覆盖和隐藏的区别

  用C写最简单的Windows窗口程序:WINAPIHelloWorld

百分百考试网 考试宝典

立即免费试用