Visual C++大学教程第8章 菜单、工具栏和状态栏设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(9)TRACKPOPUPMENU方法
• TrackPopupMenu方法用于显示一 个弹出式菜单。 • 语法: • BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );
图8.21 添加成员函数窗口
• •
(3)单击OK按钮即可编写命令消息处理 代码,代码编辑器中将显示消息处理函数 ,如图8.22所示。
图8.22 代码编辑器
•
(4)运行程序时,当用户单击菜单项时 ,将执行其命令消息处理函数。
8.1.3 菜单项的更新机制
• 在使用类向导为菜单添加命令处理 函数时,发现菜单除了COMMAND消息外 ,还有一个UPDATE_COMMAND_UI消息 ,该消息是“更新命令用户接口消息”。
•
在Object IDs列表框中选择“撤销 ”菜单项ID_EDIT_UNDO;在Messages 列表框中选择UPDATE_COMMAND_UI项 ,如图8.24所示。
图8.24 类向导
• (3)单击Add Function…按钮即可创建 该消息的处理函数。 • (4)单击Edit Code按钮即可定位到新建 的消息处理函数,在函数中添加代码使“ 撤销”菜单项可用。
设置菜单项文本
设置菜单项命令 ID
图8.6 菜单项属性窗口2
•
(7)按〈Enter〉键保存设置,返回到菜 单设计窗口,如图8.7所示。
图8.7 菜单设计窗口3
•
(8)如果用户想要设计一个级联菜单, 可以在菜单项的属性窗口中选中Pop-up复 选框,这样,在菜单项的右侧将显示一个 箭头,效果如图8.8所示。
(5)CREATEPOPUPMENU方法
• CreatePopupMenu方法用于创建一 个弹出式菜单窗口,并将其关联到菜单对 象上。 • 语法: • BOOL CreatePopupMenu( );
(6)LOADMENU方法
• LoadMenu方法从应用程序的可执 行文件中加载一个菜单资源,将其关联到 菜单对象上。 • 语法: • BOOL LoadMenu( LPCTSTR lpszResourceName ); • BOOL LoadMenu( UINT nIDResource );
•
(2)在弹出的快捷菜单中选择Insert菜单项 ,打开Insert Resource窗口,如图8.2所示。
选择新添加的菜 单资源
图8.2 插入资源对话框
•
(3)在Resource type列表框中选择Menu 节点,单击“New”按钮,创建一个菜单, 如图8.3所示。
选中菜单项,按“Enter ” 键打开菜单属性窗口
(7)DESTROYMENU方法
• DestroyMenu方法用于释放菜单窗口 ,当菜单窗口被释放前,它将从菜单对象上 分离出来。 • 语法: • BOOL DestroyMenu( ); •
(8)DELETEMENU方法
• DeleteMenu方法用于从菜单中删除 一个菜单项。 • 语法: • BOOL DeleteMenu( UINT nPosition, UINT nFlags );
图8.8 级联菜单
8.1.2 菜单项的命令处理
• (1)单击菜单栏中的“View”/“Class Wizard…”命令,打开MFC ClassWizard窗口 ,并选择Message Maps选项卡,在Object IDs 列表框中选择一个菜单项,如图8.20所示。
图8.20 类向导
•
(2)在该窗口的Messages列表框中双击 COMMAND,将打开“添加成员函数”窗口 ,如图8.21所示。
图8.3 菜单设计窗口1
•
(4)在菜单设计窗口中,按〈Enter〉键 打开属性窗口,设计菜单标题,如图8.4所示 。
图8.4 菜单项属性窗口1
•
(5)按〈Enter〉键保存设置,返回到菜 单设计窗口,如图8.5所示。
图8Fra Baidu bibliotek5 菜单设计窗口2
•
(6)如果用户需要设计子菜单,可以选 中下方的虚边框,按〈Enter〉键打开菜单 项属性窗口,在属性窗口中设置菜单项标 题和菜单ID,如图8.6所示。
• FromHandle方法根据菜单句柄返回 一个菜单对象指针。 • 语法: • static CMenu* PASCAL FromHandle( HMENU hMenu );
(4)CREATEMENU方法
• CreateMenu方法用于创建一个菜单 窗口,并将其关联到菜单对象上。 • 语法: • BOOL CreateMenu( );
• (1)打开一个基于单文档的应用程序,运 行程序后发现“编辑”菜单下的菜单项都 不可用,如图8.23所示。
图8.23 运行结果
• (2)如果要使“编辑”菜单下的菜单项都可用 ,就要为相应的菜单项处理 UPDATE_COMMAND_ UI消息,以“撤销”菜单项为例,打开类向导, 选择Message Maps选项卡,在Class name下 拉列表中选择CMainFrame类。
第8章 菜单、工具栏和状态栏设计 8.1 菜 单 设 计 • 8.1.1 菜单资源设计
• (1)在工作区的ResourceView选项卡中 ,用鼠标右键单击某个节点,将弹出一个 快捷菜单,如图8.1所示。
鼠标右键单击该节点,在 弹出的快捷菜单中选择 “Insert ”菜单项
工作区的资源视图窗口
图8.1 弹出菜单
(1)Attach方法
• Attach方法用于将句柄关联到菜单 对象上。 • 语法: • BOOL Attach( HMENU hMenu );
(2)DETACH方法
• Detach方法从菜单对象上分离菜单 句柄,方法返回分离的菜单句柄。 • 语法: • HMENU Detach( );
(3)FROMHANDLE方法
• 代码如下: • void CMainFrame::OnUpdateEditUndo(CCm dUI* pCmdUI) • { • pCmdUI->Enable(); //使菜单项可用 • }
• (5)运行程序,效果如图8.25所示。
菜单项可用
图8.25 菜单项的更新机制
8.1.4 菜单类介绍