第6章 菜单工具栏与状态栏.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 菜单、工具栏与状态栏
18
【例6.2】为例6.1中增加的菜单项添加消息处理函数。
(1)打开例6.1中所创建的应用程序MyDraw。
(2)单击【View | ClassWizard】菜单项或按Ctrl+W键 启动ClassWizard类向导。
(3)为“矩形”及“椭圆”菜单项添加消息处理函数。
在ClassWizard对话框的Class name栏下拉列表中 选 择 CMyDrawView , 在 Object IDs 栏 中 选 择 ID_RECTANGLE , 在 Messages 栏 选 择 COMMAND , 单 击 Add Function按钮,接受系统默认函数名。单击Edit Code 按钮,为消息处理函数添加如下代码。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
13
“矩形”菜单的快捷键,此处仅起提示 作用,要真正成为快捷键还需要使用快 捷键编辑器进行设置
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
14
(4) 为菜单项添加快捷键。
打开ResourceView视图中的Accelerator文件夹,双击 IDR_MAINFRAME打开快捷键编辑器。双击编辑器底 部的空白框,打开Accel Properties对话框,在ID栏下拉 列表中选择ID_RECTANGLE,在Key编辑框中输入R, 右边单选按钮接受默认值,关闭对话框。用同样的方法 为“椭圆”菜单项定义快捷键。如图所示,
第6章 菜单、工具栏与状态栏
7
2.属性对话框的设置
用于输入菜单项的标识符(ID)、标题(Caption)和菜 单项在状态栏上显示的提示(Prompt)信息等。
菜单项的标 识符(ID)
2020/2/8
菜单项在状态栏上 显示的提示信息
Visual C++程序设计
标题
第6章 菜单、工具栏与状态栏
8
2020/2/8
}
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
20
(4) 编译、链接并运行程序,分别选择“矩形”和 “椭圆”菜单项,结果如图所示。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
21
6.1.4 快捷菜单 为应用程序创建快捷菜单主要有以下两种方法。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
27
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
28
打开IDR_MAINFRAME菜单资源,将主菜单“绘图” 的所有下拉菜单项复制到剪贴板上。返回到新菜单资源 编辑器,将复制的内容粘贴到新的快捷菜单上。这样快 捷菜单就具有了与“绘图”主菜单完全相同的功能。
} 用同样的方法为“椭圆”菜单项添加消息处理函数,并编写如下代码。
void CMyDrawView::OnEllipse()
{
// TODO: Add your command handler code here
CClientDC dc(this);
dc.Ellipse(250,100,450,250);
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
29
主菜单“绘图” 的所有子菜单
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
30
(5) 为快捷菜单连接一个类。
将鼠标移到新的快捷菜单上,右击选择ClassWizard 菜单项,打开ClassWizard窗口,并弹出Adding a Class 对话框,如下图所示。
31
2.使用TrackPopupMenu( )函数创建快捷菜单
使用菜单资源编辑器和 CMenu::TrackPopupMenu( ) 函数来创建右键快捷菜单。
CMenu::TrackPopupMenu函数的原型为:
BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect=NULL);
在上例中仅添加了菜单,并没有实现菜单的功能, 即没有对应的命令处理函数与菜单项对应,因此,添 加的菜单项是灰色的,即处于当前不可用状态。
添加新的菜单项后,还应该为菜单项指定一个处 理 函 数 , 即 利 用 ClassWizard 类 向 导 添 加 一 个 消 息 处 理函数。
2020/2/8
Visual C++程序设计
双 击 ResourceView 视 图 中 Menu 文 件 夹 下 的 IDR_MAINFRAME,打开标准菜单编辑器,单击【绘图】菜单 项并复制。双击新菜单资源IDR_POPUP,打开快捷菜单编 辑器,单击空白菜单项并粘贴。
第 6 章 菜单、工具栏与状态栏
6.1 菜单 6.2 工具栏 6.3 状态栏
第6章 菜单、工具栏与状态栏
2
6.1 菜单
6.1.1 菜单的类型 常见菜单有3种:主菜单、弹出菜单和快捷菜单。
1.主菜单 指出现在应用程序主窗口或最上层窗口的菜单。
通常对应有一个弹出菜单作为它的子菜单。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
3
2.弹出菜单
指选择主菜单或一个菜单项时弹出的子菜单。
3.快捷菜单
当右击某个界面对象时,通常会弹出快捷菜单, 它出现在鼠标箭头的位置,快速展示当前对象可用的 命令功能。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
4
菜单设计一般需要经过下面两步:
(1) 使用菜单编辑器编辑菜单资源;
(2) 使用ClassWizard进行消息映射,编辑成员函 数,完成菜单所要实现的功能。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
5
6.1.2 编辑菜单
使用菜单编辑器来编辑菜单资源。双击ResourceView 视图中的Menu菜单资源,打开菜单编辑器。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
15
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
16
(5) 编译、链接并运行程序。
菜单项为灰色 不可用
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
17
6.1.3 建立消息映射
选 择 Select an existing class 项,单击OK按钮, 在弹 出的 Select Class 对 话 框 类 列表中选择 CMyDrawView , 单 击Select按钮。
(6) 编译、链接并运行程序。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
在Pop-up Menu对话框的Add pop-up menu to:下 拉列表中选择CMyDrawView,即将创建的快捷菜单与视 图类相关联。接受默认的菜单ID值。单击OK按钮,插入 快捷菜单。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
26
(4) 编辑快捷菜单。
展开ResourceView视图中的Menu文件夹,双击新的 菜单资源CG_IDR_POPUP_MY_DRAW_VIEW,打开菜 单资源编辑器,删除菜单POPUP下的默认菜单项。
22
【例6.3】 为例6.2中的应用程序MyDraw增加一个快捷 菜单。程序运行后,用户在视图窗口中右击,弹出一个 快捷菜单,显示主菜单“绘图”下的所有菜单项。
快捷菜单
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
23
(1)打开例6.2中的项目MyDraw。
(2)选择【Project|Add To Project】菜单项,单击【 Components and Controls】子菜单项,弹出Components and Controls Gallery对话框,如图所示。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
6
1.插入新菜单项 ➢在当前空白菜单项位置插入
选定窗口中的空白菜单项后按回车键(或 双击空白菜单项),系统弹出菜单属性对话框。
➢在某菜单项前插入
选中该菜单项并按Ins键,再双击该空白 菜单项进行编辑。
2020/2/8
Visual C++程序设计
1.使用Component Gallery创建快捷菜单 Component Gallery(组件画廊)是一个组件库,它
保存着可以共享或重用的代码。这些代码包括由Visual C++自带的组件和从用户工程中增加到Gallery中去的用 户自定义组件。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
(1)利用MFC AppWizard[exe]向导生成一个项目名为 MyDraw的单文档应用程序。
(2)增加 “绘图”主菜单。
打 开ResourceView视 图 中 的Menu文件夹 ,双击 IDR_MAINFRAME打开菜单编辑器。双击菜单栏右侧 的虚线空白菜单项,弹出菜单项属性对话框,在 Caption栏中输入“绘图(&D)”。其他采用系统默认值。
第6章 菜单、工具栏与状态栏
32
参数nflags的含义
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
33
【例6.4】 使用TrackPopupMenu( )函数创建例6.3中的快捷 菜单。
(1) 打开例6.2中的项目MyDraw。
(2) 选择【Insert|Resource】菜单项,向应用程序中添加一个 新的菜单资源,并将新菜单的ID改为IDR_POPUP。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
11
双击打开菜单编辑器
双击打开菜单项属性对话框
菜单项名称,&表示在 字母D下加下划线
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
12
(3) 为主菜单增加菜单项
右击“绘图”菜单项下的虚线空白菜单项,在弹 出的快捷菜单中选择Properties,打开菜单项属性设置 对 话 框 。 在 ID 栏 中 输 入 ID_RECTANGLE , Caption 栏 中输入“矩形(&R)\tCtrl+R”,Prompt栏中输入“在视 图中绘制矩形\n矩形”。用同样的方法添加“椭圆”子 菜 单 项 , 它 的 ID 、 Caption 和 Prompt 分 别 为 ID_ELLIPSE、椭圆(&L)\tCtrl+L、在视图中绘制椭圆 \n椭圆,并在“矩形”和“椭圆”两个菜单项之间添加 一条分隔线。
Visual C++程序设计
第6章 菜单、工具栏与状态栏
9
3.调整菜单项位置 选中某菜单项将其拖至适当位置。
4.删除菜单项 用鼠标单击菜单项或用上、下、Leabharlann Baidu、右光标键
选择菜单项,然后单击Cut按钮或按Del键删除。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
10
【例6.1】编写一个单文档应用程序MyDraw,在菜单栏 中增加一个“绘图”主菜单,并在其中添加“矩形”和 “椭圆”两个菜单项。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
19
void CMyDrawView::OnRectangle()
{
// TODO: Add your command handler code here
CClientDC dc(this); dc.Rectangle(10,10,200,100);//绘制矩形
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
24
双击打开对话框中的Visual C++ Components文 件夹,如图所示。
2020/2/8
Visual C++程序设计
第6章 菜单、工具栏与状态栏
25
(3)选择对话框列表中的Pop-up Menu项,单击Insert按 钮 , 在 弹 出 的 提 示 对 话 框 中 单 击 OK 按 钮 , 弹 出 Pop-up Menu对话框,如图所示。
该函数的功能是显示一个右键快捷菜单。其中, nflags表示屏幕位置标志(见下表)。x、y分别表示菜单 的水平坐标和顶端的垂直坐标;pWnd表示弹出菜单的窗口, 包括全部的WM_COMMAND消息;lpRect表示一个矩形域,当 单击这个矩形域时菜单不消失。
2020/2/8
Visual C++程序设计