1、VB 6.0 程序设计,2,第5章 菜单设计,任务11 多文档编辑器,3,任务11 多文档编辑器,学习目的 工作任务 实现步骤 背景知识 小结 练习,4,学习目的,1掌握菜单、弹出式菜单的设计方法。 2熟练掌握多文档界面(MDI)的设计。 3理解模态窗体和非模态窗体的区别。 4熟练掌握剪切板(ClipBoard)等系统内部对象的应用。,5,工作任务,设计一个多文档界面(MDI)的文本编辑器程序,窗体上的主菜单有“文件”、“编辑”和“窗口”。其中“文件”菜单含“新建”和“退出”子菜单,“编辑”菜单含“剪切”、“复制”和“粘贴”子菜单,“窗口”菜单含“水平平铺”、“垂直平铺”和“层叠”子菜单。子窗
2、体上有一个文本编辑区,要求实现菜单功能。,6,实现步骤,添加1个MDI窗体。 从VB菜单栏中的“工程”菜单下,选择“添加MDI窗体”,这时就在应用程序中添加了一个MDI父窗体 。,7,实现步骤,设置MDI子窗体。 子窗体本来就是普通窗体,设置普通窗体的MDIChild属性为True,则该普通窗体就变成MDI父窗体的子窗体,如果MDIChild属性为False(默认属性),则为普通窗体。,8,实现步骤,在MDI窗体上添加菜单系统,9,实现步骤,在添加菜单后,设计完成的MDI窗体mainfrm如图,10,实现步骤,下面的代码实现MDI窗体中各菜单项的功能,11,实现步骤,12,实现步骤,编写子窗体
3、childfrm的代码,13,背景知识,菜单 菜单编辑器主要包含两部分:上面是菜单控件的属性设置区,下面是菜单列表区。 为了能够通过键盘访问菜单项,可在标题的一个字母前插入 & 符号。在运行时,该字母带有下划线(& 符号是不可见的),按 Alt 键和该字母就可访问菜单或命令,称做访问键。菜单中不能使用重复的访问键。,14,背景知识,弹出式菜单 弹出式菜单是独立于菜单栏而在窗体上的浮动菜单。弹出式菜单又称为上下文菜单。可以通过单击鼠标右键来激活上下文菜单。 建立弹出式菜单的步骤如下。 (1)在菜单编辑器中建立主菜单项(没有缩进符号)。 (2)将该主菜单项的“可见”属性设为不可见,这样主菜单项就不
4、出现在窗体的菜单栏中。 (3)建立该主菜单项的下级菜单项。注意:要把下级菜单项的“可见”属性设为可见。 为了显示弹出式菜单,调用 PopupMenu 方法。,15,背景知识,多文档界面 文档界面(Multiple Document Interface,MDI)相对于单文档界面而言,就是应用程序提供了一个父窗口,该父窗口包含有该应用程序中打开的所有子窗口。当该父窗口最小化或关闭时,它所包含的所有子窗口都最小化或关闭。,16,背景知识,模态窗体和非模态窗体 当使用Show方法显示窗体时,使用的Style参数为1或vbModal,则显示的窗体为模态窗体,否则显示的为非模态窗体。 如果当前活动的窗体是
5、模态方式显示,此时其他窗体都不可以用,必须将这个模态窗体隐藏或卸载后,其他窗体才能恢复到原来的使用状态。 如果多个窗体以非模态方式显示,则可以自由的在多个窗体之间进行切换,当单击其中一个窗体时,该窗体立即成立活动窗体并显示在屏幕的前端。 模态窗体和非模态窗体只有在显示的时候才有区别,设计的时候是一样的。,17,背景知识,系统内部对象,18,小结,菜单编辑器可以用来设计应用程序的菜单系统以及建立弹出式菜单,在多文档界面(MDI)程序设计中应用广泛。为了显示弹出式菜单,需调用 PopupMenu 方法。MDI应用程序往往包含多个子窗体,当打开多个子窗体时,可以用MDI父窗体的Arrange方法重新排列子窗体。模态窗体和非模态窗体决定了窗体的交互模式。 常用的系统内部对象有App、Screen、ClipBoard、Debug、Printer等。,19,练习,1. 在窗体上建立弹出式菜单,菜单项可以用来设置标签框中的文本字体大小。 2. 设计多窗体切换的小程序,每个窗体上都有一个按钮,单击按钮时显示另外一个窗体,同时将本窗体隐藏。 3. 设计一个多文档界面的文本编辑器,该程序能打开、编辑和保存文本文件,能实现剪切、复制、粘贴等操作,还可以设置字体大小和颜色,改变窗体的排列位置及背景色等。,20,结束,