用VC++打造有多语言菜单的应用程序(3)
二、编程步骤
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的不同值,将程序编译成不同的语言版本。其实还可以在程序中添加菜单来让用户动态的改变程序的菜单,具体实现方法读者朋友们读到这儿应该不会再有什么疑惑了。另外,对于程序的动态菜单的实现,还有一种简单的实现方法是随应用程序发行一个文本文件,程序根据不容的需要从该文本文件中读取不同的字符串资源,然后将所读取的字符串做为"标题"赋给相应的菜单项。