·46 ·
…………………………………………………………Page 56……………………………………………………………
第 3 章 菜单与加速键
许一个还是多个对象处理该消息、允许哪些对象处理等。MFC 中采取了简单的方法,只允许
其中一个对象处理该消息,当沿着消息传递路径找到第一个包含该消息的处理函数的对象时,
则处理该消息,然后中断传递过程,不再搜索后续的对象。
由于命令消息可以被多种类的对象处理,因此命令消息的传递路径比较复杂,但总体思
想是由子窗口到父窗口,由窗口到文档。下面举一个简单的例子。
假设是一个多文档 MDI 应用程序,用户触发了“编辑”菜单下的“粘贴”菜单项的命令
消息,此时消息依照以下顺序传递。
(1)MDI 主框架窗口首先收到此命令消息。
(2 )主框架将处理命令的机会先让给其当前活动的 MDI 子框架窗口。
(3 )子框架窗口又将处理该命令的机会让给其活动的视图。
(4 )视图先搜索自己的消息映射,寻找对应的处理函数,如果没找到,则将消息传递给
与其关联的文档,找到则调用并中止传递过程。
(5 )文档搜索自己的消息映射,寻找对应的处理函数。一般情况下文档中包含“粘贴”
消息的处理函数,调用该处理函数完成粘贴功能。如果没有找到,文档将消息传递给文档模
板。
(6 )文档模板进行相同的过程,如果没找到,将消息传递回子框架窗口。
(7 )子框架窗口搜索对应的处理函数,如果没找到,则将消息传回 MDI 主框架窗口。
(8 )如果主框架窗口中也没找到,则消息最后停留在应用对象,不再进行进一步的传递。
从上面的叙述可以看出,命令消息的传递过程很复杂。然而一般情况下不需要了解这么
详细的消息传递路径,只需根据完成功能的要求,在相应的类中添加实现代码,就不会产生
冲突,比如例子中提到的粘贴功能,一般就是由文档完成的,因此只需在文档类中添加这个
命令消息的处理函数,而不必在别的类中添加与之冲突的处理函数。
3。2 菜单和加速键的创建
在程序中使用菜单和加速键,首先需要创建相应的资源。菜单和加速键资源告诉Windows
系统自动为程序绘制菜单,并将与菜单和加速键相关的用户操作作为命令消息发送给程序的
窗体。资源的存在大大简化了程序的处理,是 Windows 系统程序设计的一个重要部分。
下面分别介绍菜单和加速键资源的创建过程。
3。2。1 菜单的创建
实例 3…1 :创建菜单实例。源代码在光盘中“03实例 3…1test1 ”目录下。
1.创建工程
用 AppWizard 创建一个 MDI 工程,工程名为 test1 。
创建工程后,可以发现自动生成的应用程序框架中已包含了默认的菜单,根据用户在创
建时的不同选项,默认菜单中的菜单项有所不同。对于 SDI 应用程序,只生成一个菜单,其
·47 ·
…………………………………………………………Page 57……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
资源 ID 为 IDR_MAINFRAME (资源ID 用于标识资源,程序装入资源需要指定该 ID 来确定
需要装入哪个资源),这是整个应用程序共用的菜单。对于 MDI 应用程序,要生成两个菜单,
其资源 ID 分别为 IDR_MAINFRAME 和 IDR_工程名 TYPE,当应用程序尚未打开文档时显
示第一个菜单,打开文档后显示第二个菜单。
2 .添假菜单资源
添加菜单资源 。演示如何为资源 ID 为 IDR_MAINFRAME 的菜单资源添加一个包含“月
光宝盒”和“仙履奇缘”两个子菜单项的“大话西游”菜单项。其步骤如下:
(1)在集成开发环境(IDE )中单击左侧工作区窗口中的“ResourceView ”选项卡,在
树状列表中单击展开“Menu ”节点,找到需要编辑的菜单资源的 ID ,双击就可以打开该菜
单资源的编辑界面,如图 3…4 所示。
图 3…4 菜单资源编辑界面
(2 )双击 “帮助”菜单项右侧的虚线框,弹出新建顶层菜单项的属性编辑对话框,如
图 3…5 所示。注意,这个虚线框可以用鼠标拖动到顶层菜单的任何位置。在“Caption ”文本
框中输入菜单项的标题“大话西游(&D )”。标题中“&D ”的作用是在程序运行时用户可以
按 Alt+D 组合键直接打开该菜单项,在显示时,“&D ”会自动转换为添加了下划线的“D ”,
如图 3…6 所示。“Pop…up ”复选框默认被选中,表明这是一个弹出菜单项,允许有子菜单。
图 3…5 添加“大话西游”菜单项
·48 ·
…………………………………………………………Page 58……………………………………………………………
第 3 章 菜单与加速键
图 3…6 “大话西游”菜单项
(3 )关闭如图 3…5 所示的对话框,单击资源编辑器中“大话西游”的菜单项,会显示它
的下层菜单,如图 3…6 所示。因为还没有添加任何子菜单项,所以“大话西游”的下层菜单
是空的,显示为一个虚线框。在图 3…6 中单击这个虚线框,弹出类似于图 3…5 的属性编辑对
话框,如图 3…7 所示。
图 3…7 添加“月光宝盒”菜单项
其中,在“ID ”文本框中输入“ID_MOVIE1 ”,“Caption ”文本框中输入“月光宝盒(&Y) ”,
“Prompt ”文本框中输入“打开电影《大话西游之月光宝盒》”。标题中的“&Y ”表示打开“大
话西游”菜单项后,在键盘上按“Y ”键可以直接选择“月光宝盒”菜单项。当鼠标光标移
动到“月光宝盒”这个菜单项上时,会在程序的状态栏中显示“Prompt ”文本框中的内容,
即“打开电影《大话西游之月光宝盒》”。回车关闭属性编辑对话框,保存修改。
(4 )按照步骤(3 )的方法加入菜单项“仙履奇缘”,其属性对话框如图 3…8 所示。
图 3…8 添加“月光宝盒”菜单项
(5 )完成两个子菜单项的添加后,在资源编辑器中得到如图 3…9 所示的效果。
图 3…9 添加完成后的“大话西游”菜单项
3。2。2 加速键的创建
键盘加速键是应用程序中定义的某些组合键,按下组合键可以快捷地选择相应的菜单项
·49 ·
…………………………………………………………Page 59……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
和执行某些相应的操作。加速键可以和菜单项相关联,也可以定义某些菜单上没有提供的命
令。例如 Visual C++ IDE 中复制和粘贴的快捷键分别是 Ctrl+C 和 Ctrl+V,这两个快捷键就是
直接关联到 IDE “编辑”菜单下的
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 其他
- 最新章:第37章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- C语言设计
- 作者:谭浩强1 C 语言概述1.1 C语言的发展过程1.2 当代最优秀的程序设计语言1.3 C语言版本1.4 C语言的特点1.5 面向对象的程序设计语言1.6 C和C+1.7 简单的C程序介绍1.8 输入和输出函数1.9 C源程序的结构特点1.10书写程序时应遵循的规则1.11C语言的字符集1.12
- 文学名著
- 最新章:第45章
- 设计成婚:不入豪门
- 作者:海未央《设计成婚2:名门新娘》作品介绍《名门新娘》介绍:她是骆家收养的孤女,性格因为受他的影响,变得有些古灵精怪,也懂得是非之分!他说他的一切只为他而努力,可是为什么要拒绝自己呢?什么?没有满十八岁?那今天生日,够十八岁了吧?什么,还太小?太过分了,这不是耍着自己玩吗?嘿嘿,有个邪恶的老师,那
- 魔法玄幻
- 最新章:第196章
- 玄学,从入门到放弃
- 《玄学,从入门到放弃》作者:李传言文案:周诣一手拿着卜卦,一手拿着《演员的自我修养,叹息良久。他本是百年前观天占星的玄术师,谁知却一朝重生现代。他只想平淡地生活下去,可天不遂人愿,他注定将在这末法时代掀起波澜!成就一代影帝!谢千仇沉默地看着他…大师,你卦和书都拿倒了#玄学,从入门到放弃,入土,删库跑
- 魔法玄幻
- 最新章:第86章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 其他
- 最新章:第143章
- 要你言听计从
- 作者:决明第一章哈士奇,没有护卫看家的本领,对主人、客人甚至是闯空门的恶人都一样友善,咬着皮球跟小偷一块玩你丢我捡也不用太惊讶,时常被人认为忠诚度不足。贺世祺背靠在冰冷玻璃落地窗前,一整间屋子都是伸手不见五指的黑暗,也好,反正他现在什么也不需要看到,只要耳朵还有听觉就好,顺便听听贴在耳边的手机里还要
- 都市言情
- 最新章:第28章