1、第第 4 4 章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 Visual C+Visual C+程序设计与应用教程程序设计与应用教程4.1菜单菜单4.2工具栏工具栏4.3状态栏状态栏4.4应用实例应用实例Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 24.1 4.1 菜单菜单 4.1.1菜单的类型菜单的类型 常见菜单有常见菜单有3 3种种:主菜单、弹出菜单和快捷菜单主菜单、弹出菜单和快捷菜单。1.1.主菜单主菜单 指指出出现现在在应应用用程程序序主主窗窗口口或或最最上上层层窗窗口口的的菜菜单单。通常对应有一个弹出菜单作为它的
2、子菜单。通常对应有一个弹出菜单作为它的子菜单。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 32.2.弹出菜单弹出菜单指指选择主菜单或一个菜单项时弹出的子菜单选择主菜单或一个菜单项时弹出的子菜单。3.3.快捷菜单快捷菜单 当当右右击击某某个个界界面面对对象象时时,通通常常会会弹弹出出快快捷捷菜菜单单,它它出出现现在在鼠鼠标标箭箭头头的的位位置置,快快速速展展示示当当前前对对象象可可用用的的命令功能命令功能。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 4菜单结
3、构200201202203房间号0 1 2 3 楼楼层层号号01Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 5菜单设计一般需要经过下面两步:菜单设计一般需要经过下面两步:(1)(1)使用菜单编辑器编辑菜单资源;使用菜单编辑器编辑菜单资源;(2)(2)使用使用ClassWizardClassWizard进行消息映射,编辑进行消息映射,编辑成员函数,完成菜单所要实现的功能。成员函数,完成菜单所要实现的功能。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 64.1.
4、2编辑菜单编辑菜单 使使用用菜菜单单编编辑辑器器来来编编辑辑菜菜单单资资源源。双双击击ResourceViewResourceView视图中的视图中的MenuMenu菜单资源,打开菜单编辑器。菜单资源,打开菜单编辑器。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 71.1.插入新菜单项插入新菜单项在当前空白菜单项位置插入在当前空白菜单项位置插入 选选定定窗窗口口中中的的空空白白菜菜单单项项后后按按回回车车键键(或或双双击击空空白白菜菜单单项项),系系统统弹弹出出菜单属性对话框。菜单属性对话框。在某菜单项前插入在某菜单项前插入
5、选选中中该该菜菜单单项项并并按按InsIns键键,再再双击该空白菜单项进行编辑。双击该空白菜单项进行编辑。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 82.2.属性对话框的设置属性对话框的设置 用用于于输输入入菜菜单单项项的的标标识识符符(ID)(ID)、标标题题(Caption)(Caption)和和菜菜单项在状态栏上显示的单项在状态栏上显示的提示提示(Prompt)(Prompt)信息等信息等。菜单项的标菜单项的标识符识符(ID)(ID)菜单项在状态栏上菜单项在状态栏上显示的提示信息显示的提示信息标题标题Visual C
6、+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 9Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 103.3.调整菜单项位置调整菜单项位置 选中某菜单项将其拖至适当位置。选中某菜单项将其拖至适当位置。4.4.删除菜单项删除菜单项 用用鼠鼠标标单单击击菜菜单单项项或或用用上上、下下、左左、右右光光标标键键选选择择菜菜单单项项,然然后后单单击击CutCut按按钮钮或或按按DelDel键删除。键删除。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与
7、状态栏菜单、工具栏与状态栏 11【例例4.1】编编写写一一个个单单文文档档应应用用程程序序MyDraw,在在菜菜单单栏栏中中增增加加一一个个“绘绘图图”主主菜菜单单,并并在在其其中中添添加加“矩矩形形”和和“椭圆椭圆”两个菜单项。两个菜单项。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 124.1.3建立消息映射建立消息映射 在在上上例例中中仅仅添添加加了了菜菜单单,并并没没有有实实现现菜菜单单的的功功能能,即即没没有有对对应应的的命命令令处处理理函函数数与与菜菜单单项项对对应应,因因此此,添添加加的的菜菜单单项项是是灰灰色色
8、的的,即即处处于于当前不可用状态当前不可用状态。添添加加新新的的菜菜单单项项后后,还还应应该该为为菜菜单单项项指指定定一一个个处处理理函函数数,即即利利用用ClassWizardClassWizard类类向导添加一个消息处理函数。向导添加一个消息处理函数。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 13【例例4.24.2】为例为例4.14.1中增加的菜单项添加消息处理函数。中增加的菜单项添加消息处理函数。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 程序的实
9、现步骤1、利用、利用AppWizard生成程序框架生成程序框架(MenuTest)2、编辑资源、编辑资源3、加入菜单消息处理函数、加入菜单消息处理函数4、菜单命令的更新控制、菜单命令的更新控制 Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 步骤1 生成程序框架(MenuTest)1.项目名称:MenuTest2.选择单文档界面应用程序(Single document)Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 步骤2 编辑资源1.编辑菜单资源编辑菜单资源画图
10、画图Pop-up选中选中CaptionIDPrompt矩形矩形(&R)tCtrl+RID_DRAW_RECT在视图中画矩形在视图中画矩形椭圆椭圆(&C)tAlt+CID_DRAW_CIRCLE在视图中画椭圆在视图中画椭圆2.编辑快捷键资源编辑快捷键资源IDModifiersKeyID_DRAW_RECTCtrl RID_DRAW_CIRCLAltCVisual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 步骤3 加入菜单消息处理函数 Class Name Objects IDs Messages1.CMenuTestView ID_DRA
11、W_RECT COMMAND2.CMenuTestView ID_DRAW_ CIRCLE COMMANDvoid CMenuTestView:OnDrawRect()void CMenuTestView:OnDrawRect()CClientDC dc(this);CClientDC dc(this);dc.Rectangle(50,50,200,150);dc.Rectangle(50,50,200,150);void CMenuTestView:OnDrawCircle()void CMenuTestView:OnDrawCircle()CClientDC dc(this);CClien
12、tDC dc(this);dc.Ellipse(250,50,400,150);dc.Ellipse(250,50,400,150);Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 184.1.4菜单的有效控制菜单的有效控制 一般情况下,菜单项都不止一种状态。一般情况下,菜单项都不止一种状态。例例如如,在在没没有有选选择择任任何何内内容容时时,EditEdit菜菜单单下下的的CopyCopy、CutCut等等菜菜单单项项是是无无效效的的(灰灰色色显显示示)。有有时时,我我们们还还会会看看到到,在在菜菜单单项项旁旁边边可可能能还还
13、会会有有检检查查标标记记,表表示示它它是是选选中中的的还还是是不不选选中中的的。比比如如,在在WordWord的的视视图图菜菜单单项项下下,当当用用户户选选用用【网网格格线线】或或【标标尺尺】时时,相应菜单项前会出现一个相应菜单项前会出现一个“”。MFCMFC通通过过消消息息映映射射机机制制和和CCmdUICCmdUI类类更新菜单项的显示更新菜单项的显示。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 19在在类类向向导导ClassWizardClassWizard的的Message Message MapMap标标 签签 中中
14、,如如 果果 选选 择择 一一 个个 菜菜 单单 IDID,在在MessagesMessages列表框中就会出现以下两项:列表框中就会出现以下两项:COMMANDCOMMANDUPDATE_COMMAND_UIUPDATE_COMMAND_UI 其中其中UPDATE_COMMAND_UIUPDATE_COMMAND_UI是更新命令用是更新命令用户接口消息,专门用于处理菜单项和工具户接口消息,专门用于处理菜单项和工具条按钮的更新。条按钮的更新。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 基本知识1、pCmdUI-Enable(
15、true|false);说明:使用户界面对象有效或无效2、pCmdUI-SetCheck(1|0);说明:设置或取消选中用户界面对象3、使用COMMAND消息响应菜单项的选择事件 4、UPDATE_COMMAND_UI消息控制菜单项使用状态 Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 21【例例4.34.3】为为例例4.24.2的的程程序序MyDrawMyDraw添添加加更更新新用用户户界界面面的的消消息息处处理理函函数数,使使程程序序启启动动时时菜菜单单项项【椭椭圆圆】处处于于不不可可用用状状态态,当当用用户户单单击击【矩
16、矩形形】菜菜单单项项后后,在在菜菜单单项项前前显显示示 “”标标记记,并并使使【椭椭圆圆】菜单项变为可用。菜单项变为可用。Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 22操作步骤:1、首先创建菜单项;2、添加菜单命令;3、定义标记变量;public:bool m;bool n;bool f;Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 234、赋初值CLi4_3View:CLi4_3View()/TODO:add construction code herem=false;n=false;f=false;Visual C+程序设计与应用教程2022/10/27第第4 4章章 菜单、工具栏与状态栏菜单、工具栏与状态栏 245、菜单项“椭圆”不可用void CLi4_3View:OnUpdatecircle(CCmdUI*pCmdUI)pCmdUI-Enable(m);pCmdUI-SetCheck(f);Visual C+程序设计与应用教程2022/1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1