📄 subject_17385.htm
字号:
<p>
序号:17385 发表者:VC雏鸟 发表日期:2002-10-11 06:58:27
<br>主题:建立一个菜单,用菜单命令实现中文和英文之间转换来显示菜单
<br>内容:建立一个菜单,用菜单命令实现中文和英文之间转换来显示菜单
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:iwill 回复日期:2002-10-11 08:10:46
<br>内容:装入不同的菜单资源即可 <BR><BR>SetMenu...
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐景周 回复日期:2002-10-11 09:30:50
<br>内容:参看下面方法:<BR><BR>---- 一、建立工程项目文件 <BR><BR>---- 采用VC中应用程序向导(AppWizard)建立一个工程项目:Menu。在可选者项中,选者单文档,语言为汉语,其余选者默认项。此时编译运行得到一个具有中文菜单的应用程序。下面将加入英文菜单到应用程序中。 <BR><BR>---- 二、修改建立菜单资源 <BR><BR>---- 在资源编辑器中打开菜单资源编辑器编辑IDR_MAINFRAME菜单资源,加入改变菜单的开关命令项。在查看项下加入菜单: <BR><BR>---- ID: ID_MENU_CHANGE Caption 英语(&E) <BR><BR>---- 关闭资源编辑器。用Windows的写字板打开项目下的资源文件Menu.rc找到如下内容: <BR><BR>IDR_MAINFRAME MENU PRELOAD DISCARDABLE <BR>BEGIN<BR> POPUP "文件(&F)"<BR> BEGIN<BR> MENUITEM "新建(&N)\tCtrl+N", ID_FILE_NEW<BR> MENUITEM "打开(&O)...\tCtrl+O", ID_FILE_OPEN<BR> MENUITEM "保存(&S)\tCtrl+S", ID_FILE_SAVE<BR> MENUITEM "另存为(&A)...", ID_FILE_SAVE_AS<BR> MENUITEM SEPARATOR<BR> MENUITEM "打印(&P)...\tCtrl+P", ID_FILE_PRINT<BR> MENUITEM "打印预览(&V)", ID_FILE_PRINT_PREVIEW<BR>MENUITEM "打印设置(&R)...", ID_FILE_PRINT_SETUP<BR>MENUITEM SEPARATOR<BR>MENUITEM "最近文件", ID_FILE_MRU_FILE1, GRAYED<BR>MENUITEM SEPARATOR<BR>MENUITEM "退出(&X)", ID_APP_EXIT<BR> END<BR><BR> POPUP "编辑(&E)"<BR> BEGIN<BR>MENUITEM "撤消(&U)\tCtrl+Z", ID_EDIT_UNDO<BR>MENUITEM SEPARATOR<BR>MENUITEM "剪切(&T)\tCtrl+X", ID_EDIT_CUT<BR>MENUITEM "复制(&C)\tCtrl+C", ID_EDIT_COPY<BR>MENUITEM "粘贴(&P)\tCtrl+V", ID_EDIT_PASTE<BR> END<BR> <BR> POPUP "查看(&V)"<BR> BEGIN<BR>MENUITEM "工具栏(&T)", ID_VIEW_TOOLBAR<BR>MENUITEM "状态栏(&S)", ID_VIEW_STATUS_BAR<BR>MENUITEM "英语", ID_MENU_CHANGE<BR> END<BR><BR> POPUP "帮助(&H)"<BR> BEGIN<BR> MENUITEM "关于 Menu(&A)...", ID_APP_ABOUT<BR> END<BR>END<BR><BR>---- 将上述内容复制到剪贴板中,然后拷贝一份到上述内容的下面,并作部分修改。将IDR_MAINFRAME改为IDR_MAINFRAME_EN,其他汉语译成英语,并按英语菜单的习惯修改。改后的菜单资源如下: <BR><BR>IDR_MAINFRAME_EN MENU PRELOAD DISCARDABLE <BR> BEGIN<BR> POPUP "&File"<BR> BEGIN<BR>MENUITEM "New(&N)\tCtrl+N", ID_FILE_NEW<BR>MENUITEM "Open(&O)...\tCtrl+O", ID_FILE_OPEN<BR>MENUITEM "Save(&S)\tCtrl+S", ID_FILE_SAVE<BR>MENUITEM "Save As(&A)...", ID_FILE_SAVE_AS<BR>MENUITEM SEPARATOR<BR> MENUITEM "&Print...\tCtrl+P", ID_FILE_PRINT<BR>MENUITEM "Print Pre&view", ID_FILE_PRINT_PREVIEW<BR>MENUITEM "&Printer Reset...", ID_FILE_PRINT_SETUP<BR>MENUITEM SEPARATOR<BR>MENUITEM "Re¢ File", ID_FILE_MRU_FILE1, GRAYED<BR>MENUITEM SEPARATOR<BR>MENUITEM "E(&X)it", ID_APP_EXIT<BR> END<BR><BR>POPUP "(&E)dit"<BR> BEGIN<BR>MENUITEM "&Undo\tCtrl+Z", ID_EDIT_UNDO<BR>MENUITEM SEPARATOR<BR>MENUITEM "Cu&T\tCtrl+X", ID_EDIT_CUT<BR>MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY<BR>MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE<BR> END<BR><BR> POPUP "&View"<BR><BR> BEGIN<BR>MENUITEM "&Tool bar", ID_VIEW_TOOLBAR<BR>MENUITEM "&Status bar", ID_VIEW_STATUS_BAR<BR>MENUITEM "&Chinese", ID_MENU_CHANGE<BR> END<BR><BR> POPUP "&Help"<BR><BR> BEGIN<BR>MENUITEM "&About Menu...", ID_APP_ABOUT<BR> END<BR><BR> END<BR><BR>---- 保存修改后的资源文件。把资源文件重新调入资源编辑器,可发现已有两套菜单资源。如有什么不合适的地方可在资源编辑器中做进一步修改。 <BR><BR>---- 三、加入菜单变量到程序中 <BR><BR>---- 由于菜单附属于主窗口,所以应在CMainFrame类中加入相关变量: <BR><BR> public:<BR><BR> CMenu m_pEnglish;\\用于保存英语菜单资源<BR> CMenu m_pChinese;\\用于保存汉语菜单资源 <BR><BR>enum{C,E}m_eMenu;\\标示现在使用的是英语<BR>菜单还是汉语菜单,C--汉语,E--英语<BR><BR>---- 四、初始化变量 需要初始化的变量仅有一个m_eMenu。由于开始时菜单使用默认中文菜单,所以在CMainFrame构造函数中初始化: <BR><BR>CMainFrame::CMainFrame()<BR>{<BR> // TODO: add member initialization code here<BR> m_Menu=C;<BR>}<BR><BR>---- 五、调入保存菜单资源 <BR><BR>---- 在主窗口的OnCreate函数中,初始化并保存菜单资源: <BR><BR>int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<BR>{<BR> .......<BR><BR> m_pEnglish.LoadMenu(IDR_MAINFRAME_EN);\\调入英文菜单资源 <BR> HMENU hm=::GetMenu(this- >m_hWnd) ;\\获得中文菜单资源<BR> m_pChinese.Attach(hm); \\保存中文菜单资源<BR> return 0;<BR>}<BR><BR>---- 六、响应改变菜单命令 <BR><BR>---- 利用ClassWizard为CMainFrame类加入ID_MENU_CHANGE菜单命令响应函数: <BR><BR>void CMainFrame::OnMenuChange() <BR>{<BR> // TODO: Add your command handler code here<BR>if(m_Menu==E) //如果现在菜单为英语<BR> {<BR> SetMenu(&m_pChinese);// 把菜单设置为汉语<BR> m_Menu=C;<BR> }<BR> else if(m_Menu==C) //如果现在菜单为汉语<BR> {<BR> SetMenu(&m_pEnglish);//设置菜单为英语<BR> m_Menu=E;<BR> }<BR>}<BR><BR>---- 七、销毁菜单 <BR><BR>---- 在CMainFrame的析够函数中销毁菜单: <BR><BR>CMainFrame::~CMainFrame()<BR>{<BR> m_pChinese.DestroyMenu(); <BR> m_pEnglish.DestroyMenu(); <BR>}<BR><BR>---- 编译运行程序您就可以获得一个具有英汉对照菜单的应用程序。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:黄飚 回复日期:2002-10-11 09:49:24
<br>内容: CMenu *pNewMenu=NULL;<BR> CMenu* pTopMenu = AfxGetMainWnd()->GetMenu();<BR> int iPos;<BR> for (iPos = pTopMenu->GetMenuItemCount()-1; iPos >= 0; iPos--)<BR> {<BR> CMenu* pMenu = pTopMenu->GetSubMenu(iPos);<BR> if(pMenu&&pMenu->GetMenuItemID(0)==ID_CHINESE_MENU)<BR> {<BR> pNewMenu=pMenu;<BR><BR> }<BR> <BR> }<BR> ASSERT(pNewMenu != NULL);<BR> for (iPos = pNewMenu->GetMenuItemCount(); iPos >=0; iPos--)<BR> pNewMenu->DeleteMenu(iPos, MF_BYPOSITION);<BR> <BR><BR> static bEnglish=TRUE;<BR> if(bEnglish)<BR> pNewMenu->AppendMenu(MF_STRING|MF_ENABLED ,1, "english");<BR> else<BR> pNewMenu->AppendMenu(MF_STRING|MF_ENABLED ,1, "中文");<BR> if(bEnglish)<BR> bEnglish=FALSE;<BR> else<BR> bEnglish=TRUE;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:黄飚 回复日期:2002-10-11 09:57:28
<br>内容:http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=303
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -