My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > WINDOWS标准界面元素
VC中多语言菜单的实现
作者:未知 时间:2005-07-20 14:11 出处:VC知识库 责编:MyFAQ
              摘要:VC中多语言菜单的实现

VC中多语言菜单的实现
作者:浙江大学 王向伟

下载本文示例代码

软件的国际化不可避免。一种软件可能被很多国家的人使用,如给您的软件加上多种语言的菜单,不但给使用者带来很多方便,也为您的软件的推广带来很多便利。比如给您开发的中文软件,加上一个英语或日语菜单,对母语为英语和日语的朋友将会带来很多便利。




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

一、建立工程项目文件

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

二、用文本形式打开资源文件,找到IDR_MAINFRAME的菜单文本内容如下:
IDR_MAINFRAME MENU PRELOAD DISCARDABLE 
BEGIN
    POPUP "文件(&F)"
    BEGIN
        MENUITEM "新建(&N)\tCtrl+N",            ID_FILE_NEW
        MENUITEM "打开(&O)...\tCtrl+O",         ID_FILE_OPEN
        MENUITEM "保存(&S)\tCtrl+S",            ID_FILE_SAVE
        MENUITEM "另存为(&A)...",               ID_FILE_SAVE_AS
        MENUITEM SEPARATOR
        MENUITEM "打印(&P)...\tCtrl+P",         ID_FILE_PRINT
        MENUITEM "打印预览(&V)",                ID_FILE_PRINT_PREVIEW
        MENUITEM "打印设置(&R)...",             ID_FILE_PRINT_SETUP
        MENUITEM SEPARATOR
        MENUITEM "最近文件",                    ID_FILE_MRU_FILE1, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "退出(&X)",                    ID_APP_EXIT
    END
    POPUP "编辑(&E)"
    BEGIN
        MENUITEM "撤消(&U)\tCtrl+Z",            ID_EDIT_UNDO
        MENUITEM SEPARATOR
        MENUITEM "剪切(&T)\tCtrl+X",            ID_EDIT_CUT
        MENUITEM "复制(&C)\tCtrl+C",            ID_EDIT_COPY
        MENUITEM "粘贴(&P)\tCtrl+V",            ID_EDIT_PASTE
    END
    POPUP "查看(&V)"
    BEGIN
        MENUITEM "工具栏(&T)",                  ID_VIEW_TOOLBAR
        MENUITEM "状态栏(&S)",                  ID_VIEW_STATUS_BAR
        MENUITEM "弹出CD",                      ID_VIEW_FULLSCREEN
        MENUITEM "英文",                        ID_MENU_CHANGE
    END
    POPUP "帮助(&H)"
    BEGIN
        MENUITEM "关于 FullScreen(&A)...",      ID_APP_ABOUT
    END
END
在此后加入英文菜单资源复制上述文本,把其中的中文改成英文,并作些改动
IDR_MAINFRAME_ENGLISH MENU PRELOAD DISCARDABLE 
BEGIN
    POPUP "File(&F)"
    BEGIN
        MENUITEM "New(&N)\tCtrl+N",             ID_FILE_NEW
        MENUITEM "Open(&O)...\tCtrl+O",         ID_FILE_OPEN
        MENUITEM "Save(&S)\tCtrl+S",            ID_FILE_SAVE
        MENUITEM "Save as(&A)...",              ID_FILE_SAVE_AS
        MENUITEM SEPARATOR
        MENUITEM "Print(&P)...\tCtrl+P",        ID_FILE_PRINT
        MENUITEM "Print Preview(&V)",           ID_FILE_PRINT_PREVIEW
        MENUITEM "Print Setting(&R)...",        ID_FILE_PRINT_SETUP
        MENUITEM SEPARATOR
        MENUITEM "Recent Files",                ID_FILE_MRU_FILE1, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Exit(&X)",                    ID_APP_EXIT
    END
    POPUP "Edit(&E)"
    BEGIN
        MENUITEM "Undo(&U)\tCtrl+Z",            ID_EDIT_UNDO
        MENUITEM SEPARATOR
        MENUITEM "Cut(&T)\tCtrl+X",             ID_EDIT_CUT
        MENUITEM "Copy(&C)\tCtrl+C",            ID_EDIT_COPY
        MENUITEM "Paste(&P)\tCtrl+V",           ID_EDIT_PASTE
    END
    POPUP "View(&V)"
    BEGIN
        MENUITEM "ToolBar(&T)",                 ID_VIEW_TOOLBAR
        MENUITEM "StatusBar(&S)",               ID_VIEW_STATUS_BAR
        MENUITEM "Eject CD",                    ID_VIEW_FULLSCREEN
        MENUITEM "Chinese",                     ID_MENU_CHANGE
    END
    POPUP "Help(&H)"
    BEGIN
        MENUITEM "About FullScreen(&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(&m_chinesemenu);
		m_current=c;
	}
	else
	{
		SetMenu(&m_englistmenu);
		m_current=e;
	}
	
}
编译运行程序您就可以获得一个具有英汉对照菜单的应用程序。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有