友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第23章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






 ·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  “编辑”菜单下的
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!