预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共57页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章菜单、工具栏与状态栏6.1菜单2.弹出菜单 指选择主菜单或一个菜单项时弹出的子菜单。 3.快捷菜单 当右击某个界面对象时,通常会弹出快捷菜单,它出现在鼠标箭头的位置,快速展示当前对象可用的命令功能。菜单设计一般需要经过下面两步: (1)使用菜单编辑器编辑菜单资源; (2)使用ClassWizard进行消息映射,编辑成员函数,完成菜单所要实现的功能。6.1.2编辑菜单 使用菜单编辑器来编辑菜单资源。双击ResourceView视图中的Menu菜单资源,打开菜单编辑器。1.插入新菜单项 在当前空白菜单项位置插入 选定窗口中的空白菜单项后按回车键(或双击空白菜单项),系统弹出菜单属性对话框。 在某菜单项前插入 选中该菜单项并按Ins键,再双击该空白菜单项进行编辑。2.属性对话框的设置 用于输入菜单项的标识符(ID)、标题(Caption)和菜单项在状态栏上显示的提示(Prompt)信息等。83.调整菜单项位置 选中某菜单项将其拖至适当位置。 4.删除菜单项 用鼠标单击菜单项或用上、下、左、右光标键选择菜单项,然后单击Cut按钮或按Del键删除。【例6.1】编写一个单文档应用程序MyDraw,在菜单栏中增加一个“绘图”主菜单,并在其中添加“矩形”和“椭圆”两个菜单项。 (1)利用MFCAppWizard[exe]向导生成一个项目名为MyDraw的单文档应用程序。 (2)增加“绘图”主菜单。 打开ResourceView视图中的Menu文件夹,双击IDR_MAINFRAME打开菜单编辑器。双击菜单栏右侧的虚线空白菜单项,弹出菜单项属性对话框,在Caption栏中输入“绘图(&D)”。其他采用系统默认值。双击打开菜单编辑器(3)为主菜单增加菜单项 右击“绘图”菜单项下的虚线空白菜单项,在弹出的快捷菜单中选择Properties,打开菜单项属性设置对话框。在ID栏中输入ID_RECTANGLE,Caption栏中输入“矩形(&R)\tCtrl+R”,Prompt栏中输入“在视图中绘制矩形\n矩形”。用同样的方法添加“椭圆”子菜单项,它的ID、Caption和Prompt分别为ID_ELLIPSE、椭圆(&L)\tCtrl+L、在视图中绘制椭圆\n椭圆,并在“矩形”和“椭圆”两个菜单项之间添加一条分隔线。“矩形”菜单的快捷键,此处仅起提示作用,要真正成为快捷键还需要使用快捷键编辑器进行设置(4)为菜单项添加快捷键。 打开ResourceView视图中的Accelerator文件夹,双击IDR_MAINFRAME打开快捷键编辑器。双击编辑器底部的空白框,打开AccelProperties对话框,在ID栏下拉列表中选择ID_RECTANGLE,在Key编辑框中输入R,右边单选按钮接受默认值,关闭对话框。用同样的方法为“椭圆”菜单项定义快捷键。如图所示,15(5)编译、链接并运行程序。6.1.3建立消息映射 在上例中仅添加了菜单,并没有实现菜单的功能,即没有对应的命令处理函数与菜单项对应,因此,添加的菜单项是灰色的,即处于当前不可用状态。 添加新的菜单项后,还应该为菜单项指定一个处理函数,即利用ClassWizard类向导添加一个消息处理函数。【例6.2】为例6.1中增加的菜单项添加消息处理函数。 (1)打开例6.1中所创建的应用程序MyDraw。 (2)单击【View|ClassWizard】菜单项或按Ctrl+W键启动ClassWizard类向导。 (3)为“矩形”及“椭圆”菜单项添加消息处理函数。 在ClassWizard对话框的Classname栏下拉列表中选择CMyDrawView,在ObjectIDs栏中选择ID_RECTANGLE,在Messages栏选择COMMAND,单击AddFunction按钮,接受系统默认函数名。单击EditCode按钮,为消息处理函数添加如下代码。voidCMyDrawView::OnRectangle() { //TODO:Addyourcommandhandlercodehere CClientDCdc(this); dc.Rectangle(10,10,200,100);//绘制矩形 } 用同样的方法为“椭圆”菜单项添加消息处理函数,并编写如下代码。 voidCMyDrawView::OnEllipse() { //TODO:Addyourcommandhandlercodehere CClientDCdc(this); dc.Ellipse(250,100,450,250); }(4)编译、链接并运行程序,分别选择“矩形”和“椭圆”菜单项,结果如图所示。(5)为快捷菜单连接一个类。 将鼠标移到新的快捷菜单上,右击选择ClassWizard菜单项,打开ClassWizard窗口,并