游子的博客
慈母手中线,游子身上衣, 临行密密缝,意恐迟迟归, 谁言寸草心,报得三春晖。 数据读取中,请稍候......
posts - 337,  comments - 546,  trackbacks - 0
软件的国际化不可避免。一种软件可能被很多国家的人使用,如给您的软件加上多种语言的菜单,不但给使用者带来很多方便,也为您的软件的推广带来很多便利。比如给您开发的中文软件,加上一个英语或日语菜单,对母语为英语和日语的朋友将会带来很多便利。
源码下载


程序运行效果图:

效果图



VC中实现多语菜单非常容易,下面以英汉对照菜单为例说明多语菜单实现的方法。

一、建立工程项目文件

选择语言为中文,其余采用默认,添加中英文切换菜单IDD_MENU_CHANGE

二、用文本形式打开资源文件,找到IDR_MAINFRAME的菜单文本内容如下:

IDR_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "文件(amp;F)"
BEGIN
MENUITEM "新建(amp;N)\tCtrl+N", ID_FILE_NEW
MENUITEM "打开(amp;O)...\tCtrl+O", ID_FILE_OPEN
MENUITEM "保存(amp;S)\tCtrl+S", ID_FILE_SAVE
MENUITEM "另存为(amp;A)...", ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "打印(amp;P)...\tCtrl+P", ID_FILE_PRINT
MENUITEM "打印预览(amp;V)", ID_FILE_PRINT_PREVIEW
MENUITEM "打印设置(amp;R)...", ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "最近文件", ID_FILE_MRU_FILE1, GRAYED
MENUITEM SEPARATOR
MENUITEM "退出(amp;X)", ID_APP_EXIT
END
POPUP "编辑(amp;E)"
BEGIN
MENUITEM "撤消(amp;U)\tCtrl+Z", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "剪切(amp;T)\tCtrl+X", ID_EDIT_CUT
MENUITEM "复制(amp;C)\tCtrl+C", ID_EDIT_COPY
MENUITEM "粘贴(amp;P)\tCtrl+V", ID_EDIT_PASTE
END
POPUP "查看(amp;V)"
BEGIN
MENUITEM "工具栏(amp;T)", ID_VIEW_TOOLBAR
MENUITEM "状态栏(amp;S)", ID_VIEW_STATUS_BAR
MENUITEM "弹出CD", ID_VIEW_FULLSCREEN
MENUITEM "英文", ID_MENU_CHANGE
END
POPUP "帮助(amp;H)"
BEGIN
MENUITEM "关于 FullScreen(amp;A)...", ID_APP_ABOUT
END
END

在此后加入英文菜单资源复制上述文本,把其中的中文改成英文,并作些改动IDR_MAINFRAME_ENGLISH MENU PRELOAD DISCARDABLE

BEGIN
POPUP "File(amp;F)"
BEGIN
MENUITEM "New(amp;N)\tCtrl+N", ID_FILE_NEW
MENUITEM "Open(amp;O)...\tCtrl+O", ID_FILE_OPEN
MENUITEM "Save(amp;S)\tCtrl+S", ID_FILE_SAVE
MENUITEM "Save as(amp;A)...", ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "Print(amp;P)...\tCtrl+P", ID_FILE_PRINT
MENUITEM "Print Preview(amp;V)", ID_FILE_PRINT_PREVIEW
MENUITEM "Print Setting(amp;R)...", ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "Recent Files", ID_FILE_MRU_FILE1, GRAYED
MENUITEM SEPARATOR
MENUITEM "Exit(amp;X)", ID_APP_EXIT
END
POPUP "Edit(amp;E)"
BEGIN
MENUITEM "Undo(amp;U)\tCtrl+Z", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cut(amp;T)\tCtrl+X", ID_EDIT_CUT
MENUITEM "Copy(amp;C)\tCtrl+C", ID_EDIT_COPY
MENUITEM "Paste(amp;P)\tCtrl+V", ID_EDIT_PASTE
END
POPUP "View(amp;V)"
BEGIN
MENUITEM "ToolBar(amp;T)", ID_VIEW_TOOLBAR
MENUITEM "StatusBar(amp;S)", ID_VIEW_STATUS_BAR
MENUITEM "Eject CD", ID_VIEW_FULLSCREEN
MENUITEM "Chinese", ID_MENU_CHANGE
END
POPUP "Help(amp;H)"
BEGIN
MENUITEM "About FullScreen(amp;A)...", ID_APP_ABOUT
END
END

修改完成后保存资源。

  三、在 CMainFrame中加入变量CMenu m_englistmenu 和m_chinesemenu保存中英文菜单资源
加入变量enum Enum{e,c}m_current 保存当前菜单

  四、由于默认为中文菜单在 CMainFrame::CMainFrame()中设置m_current=c;表示当前为中文菜单,在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中装入英文菜单资源 m_englistmenu.LoadMenu("IDR_MAINFRAME_ENGLISH");
HMENU m_hMenu=::GetMenu(this->m_hWnd); // 保存中文菜单
m_chinesemenu.Attach(m_hMenu);

  五、加入菜单函数 void CMainFrame::OnMenuChange()
{
if(m_current==e)
{
SetMenu(amp;m_chinesemenu);
m_current=c;
}
else
{
SetMenu(amp;m_englistmenu);
m_current=e;
}

}
  编译运行程序您就可以获得一个具有英汉对照菜单的应用程序。

posted on 2009-02-04 18:29 游子 阅读(484) 评论(1)  编辑 收藏 引用 所属分类: 软件

FeedBack:
# re: VC中实现多语菜单(转)----修改资源实现
2009-02-08 14:09 | IT公司面试手册
顶  回复  更多评论
  
只有注册用户登录后才能发表评论。

欢迎大家扔鸡蛋!送鲜花!

博客可以收入过千吗?

<2009年2月>
日一二三四五六25262728293031
123456789101112131415161718192021222324252627281234567

常用链接

留言簿(8)

随笔分类(314)

随笔档案(337)

文章分类(7)

文章档案(10)

相册

收藏夹(1)

其它

友情链接

数字电视

生活、旅游

自己的链接

计算机

搜索

  •  

积分与排名

  • 积分 - 408390
  • 排名 - 9

最新评论

阅读排行榜

评论排行榜