龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

用VC++打造有多语言菜单的应用程序(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
另外,为了能够动态的设置程序的菜单,还需要加入枚举变量enum Enum{e,c}m_Current。例如,如果当前需要将程序设置为"中文菜单",可以给m_Current一个初始值
  另外,为了能够动态的设置程序的菜单,还需要加入枚举变量enum Enum{e,c}m_Current。例如,如果当前需要将程序设置为"中文菜单",可以给m_Current一个初始值"c",如果该变量等于:"e"时说明项目选择了英文菜单。

  二、编程步骤

  1、 启动Visual C++6.0,生成一个单文档视图结构的程序,命名为"MutiLanguageMenu";

  2、 启动Widows的"记事本"程序,修改程序的资源文件;

  3、 给应用程序的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 ");
  return -1; // fail to create
 }
 if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status bar ");
  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);//设置界面菜单;
 return 0;

  四、小结

  本实例中的代码通过设置m_Current的不同值,将程序编译成不同的语言版本。其实还可以在程序中添加菜单来让用户动态的改变程序的菜单,具体实现方法读者朋友们读到这儿应该不会再有什么疑惑了。另外,对于程序的动态菜单的实现,还有一种简单的实现方法是随应用程序发行一个文本文件,程序根据不容的需要从该文本文件中读取不同的字符串资源,然后将所读取的字符串做为"标题"赋给相应的菜单项。

精彩图集

赞助商链接