QuerryUnload事件的语法格式为:PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)或PrivateSubMDIForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)其中,参数Cancel若设置为非0值,则停止所有装入窗体的QuerryUnload事件,且不关闭窗体和应用程序;参数UnloadMode指出发生QuerryUnload事件的原因,它可以取表8.7所示的5种值。表8.7UnloadMode设置值2)通过代码创建窗体通过代码创建新窗体的方法在MDI应用程序中使用得非常多。创建步骤如下:(1)声明新窗体。由于使用Dim语句可以声明一个对象变量,因此,在一个已经存在的窗体的基础上声明一个新窗体(如MDI子窗体)的格式与声明普通变量的方式基本相同。一般格式如下:Dim变量名As[New]对象类型例如:DimNewDocAsNewForm1该语句声明了一个对象变量NewDoc,它所参照的对象类型是Form1窗体,也就是说,声明了一个名为NewDoc的新窗体,该窗体的类型与Form1窗体的类型相同。(2)创建新窗体。用Dim语句声明一个对象变量后,应再用Set语句及New关键字将对象变量设置为新窗体。Set语句用于为对象变量赋值,其语法格式如下:Set变量=对象例如:DimNewDocAsNewForm1SetNewDoc=NewForm1该语句创建了一个新窗体NewDoc,其窗体的类型、属性都与Form1窗体相同。(3)显示新窗体。使用Show方法显示新窗体,其完整代码如下:PrivateSubCommand1_Click()DimNewDocAsNewForm1SetNewDoc=NewForm1NewDoc.ShowEndSub通过调用该子程序,就可以添加新窗体。3.程序实现1)界面设计与属性设置创建多文档的简易文本编辑器的步骤为:(1)在“文件”菜单中单击“新建工程”菜单项,创建一个新的标准EXE工程。(2)在“工程”菜单中选取“添加MDI窗体”菜单项,创建的MDI窗体被添加到工程中(注意:一个应用程序只能有一个MDI窗体)。在MDI窗体上添加一个图片框,在图片框上再添加两个命令按钮。(3)在窗体Form1上添加一个文本框,把它的MDIChild属性设为True,则该窗体为MDI的子窗体。两个窗体和文本框的属性按图8.27所示自行设置。2)编写代码打开“代码”窗口,编写MDI窗体中两个命令按钮的单击事件过程如下:PrivateSubCommand1_Click()单击“新建”命令按钮DimNewDocAsNewForm1SetNewDoc=NewForm1NewDoc.ShowEndSubPrivateSubCommand2_Click()单击“退出”命令按钮EndEndSubForm1窗体的Form_Resize事件过程如下:PrivateSubForm_Resize()扩展文本框以放置当前子窗体Text1.Height=ScaleHeightText1.Width=ScaleWidthEndSub3)运行程序运行程序,结果如图8.27所示。习题八8.1如何定义菜单及调整菜单项的层次?8.2设计一个如图8.28所示的菜单,并编写相应的事件过程。图8.28设计好的菜单效果8.3定义一个与“记事本”使用的菜单相同的菜单。8.4在题8.2的基础上增加一个能设置斜体和粗体的弹出式菜单。8.5在工具栏上如何定义按钮?如何定义分隔条?8.6如何建立Toolbar控件和ImageList控件之间的关联?已建立关联的ImageList控件中还能不能添加按钮图像?8.7设计一个能设置宋体、楷体和隶书的有菜单栏和工具栏的编辑器。8.8状态栏有哪两种样式?8.9多文档界面与多重窗体有何区别?与单文档界面相比,多文档界面有何特点?8.10建立一个类似Word的文档编辑器,其MDI窗体的菜单如表8.8所示