欢迎来到天天文库
浏览记录
ID:50307514
大小:2.29 MB
页数:133页
时间:2020-03-07
《Visual C++大学教程 教学课件 作者 冯博琴 第8章 菜单 工具栏和状态栏设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第8章菜单、工具栏和状态栏设计8.1菜单设计8.1.1菜单资源设计(1)在工作区的ResourceView选项卡中,用鼠标右键单击某个节点,将弹出一个快捷菜单,如图8.1所示。图8.1弹出菜单(2)在弹出的快捷菜单中选择Insert菜单项,打开InsertResource窗口,如图8.2所示。图8.2插入资源对话框(3)在Resourcetype列表框中选择Menu节点,单击“New”按钮,创建一个菜单,如图8.3所示。图8.3菜单设计窗口1(4)在菜单设计窗口中,按〈Enter〉键打开属性窗口,设计菜单标题,如图8.4所示。图8.4菜单项属性窗口1(5)按〈Enter〉键保存设置,返回到菜
2、单设计窗口,如图8.5所示。图8.5菜单设计窗口2(6)如果用户需要设计子菜单,可以选中下方的虚边框,按〈Enter〉键打开菜单项属性窗口,在属性窗口中设置菜单项标题和菜单ID,如图8.6所示。图8.6菜单项属性窗口2(7)按〈Enter〉键保存设置,返回到菜单设计窗口,如图8.7所示。图8.7菜单设计窗口3(8)如果用户想要设计一个级联菜单,可以在菜单项的属性窗口中选中Pop-up复选框,这样,在菜单项的右侧将显示一个箭头,效果如图8.8所示。图8.8级联菜单8.1.2菜单项的命令处理(1)单击菜单栏中的“View”/“ClassWizard…”命令,打开MFCClassWizard窗口,
3、并选择MessageMaps选项卡,在ObjectIDs列表框中选择一个菜单项,如图8.20所示。图8.20类向导(2)在该窗口的Messages列表框中双击COMMAND,将打开“添加成员函数”窗口,如图8.21所示。图8.21添加成员函数窗口(3)单击OK按钮即可编写命令消息处理代码,代码编辑器中将显示消息处理函数,如图8.22所示。图8.22代码编辑器(4)运行程序时,当用户单击菜单项时,将执行其命令消息处理函数。8.1.3菜单项的更新机制在使用类向导为菜单添加命令处理函数时,发现菜单除了COMMAND消息外,还有一个UPDATE_COMMAND_UI消息,该消息是“更新命令用户接口消
4、息”。(1)打开一个基于单文档的应用程序,运行程序后发现“编辑”菜单下的菜单项都不可用,如图8.23所示。图8.23运行结果(2)如果要使“编辑”菜单下的菜单项都可用,就要为相应的菜单项处理UPDATE_COMMAND_UI消息,以“撤销”菜单项为例,打开类向导,选择MessageMaps选项卡,在Classname下拉列表中选择CMainFrame类。在ObjectIDs列表框中选择“撤销”菜单项ID_EDIT_UNDO;在Messages列表框中选择UPDATE_COMMAND_UI项,如图8.24所示。图8.24类向导(3)单击AddFunction…按钮即可创建该消息的处理函数。(
5、4)单击EditCode按钮即可定位到新建的消息处理函数,在函数中添加代码使“撤销”菜单项可用。代码如下:voidCMainFrame::OnUpdateEditUndo(CCmdUI*pCmdUI){pCmdUI->Enable();//使菜单项可用}(5)运行程序,效果如图8.25所示。图8.25菜单项的更新机制8.1.4菜单类介绍(1)Attach方法Attach方法用于将句柄关联到菜单对象上。语法:BOOLAttach(HMENUhMenu);(2)Detach方法Detach方法从菜单对象上分离菜单句柄,方法返回分离的菜单句柄。语法:HMENUDetach();(3)FromHan
6、dle方法FromHandle方法根据菜单句柄返回一个菜单对象指针。语法:staticCMenu*PASCALFromHandle(HMENUhMenu);(4)CreateMenu方法CreateMenu方法用于创建一个菜单窗口,并将其关联到菜单对象上。语法:BOOLCreateMenu();(5)CreatePopupMenu方法CreatePopupMenu方法用于创建一个弹出式菜单窗口,并将其关联到菜单对象上。语法:BOOLCreatePopupMenu();(6)LoadMenu方法LoadMenu方法从应用程序的可执行文件中加载一个菜单资源,将其关联到菜单对象上。语法:BOOLL
7、oadMenu(LPCTSTRlpszResourceName);BOOLLoadMenu(UINTnIDResource);(7)DestroyMenu方法DestroyMenu方法用于释放菜单窗口,当菜单窗口被释放前,它将从菜单对象上分离出来。语法:BOOLDestroyMenu();(8)DeleteMenu方法DeleteMenu方法用于从菜单中删除一个菜单项。语法:BOOLDeleteMenu(UI
此文档下载收益归作者所有