创建 MDI 应用程序的菜单
通过给 MDI 窗体和子窗体添加菜单控件,可以为 Visual Basic 应用程序创建菜单。管理 MDI 应用程序中菜单的一个方法是把希望在任何时候都显示的菜单控件放在 MDI 窗体上(即使没有子窗体可见时)。当运行该应用程序时,如果没有可见的子窗体,会自动显示 MDI 窗体菜单,如图 6.14所示。
把应用于子窗体的菜单控件放置到子窗体中。在运行时,只要有一个子窗体可见,这些菜单标题就会显示在 MDI 窗体的菜单栏中。
有些应用程序支持多种类型的文档。例如,在 Microsoft Access 中,可以打开表格、查询、窗体和其它文档类型。要在 Visual Basic 中创建这样的应用程序,应使用两个子窗体。设计一个带有执行工作单任务菜单的子窗体和另一个带有完成图表任务菜单的子窗体。

在运行时,当工作单窗体的实例有焦点时,则显示工作单菜单,而当选取图表时,则显示图表窗体的菜单。如果所有的工作单和图表都关闭,则显示 MDI 窗体的菜单。关于创建菜单的详细内容,请参阅本章前面的“在应用程序中使用菜单”部分。
创建“窗口”菜单
大多数 MDI 应用程序(例如:Microsoft word for Windows 与 Microsoftexcel)都结合了“窗口”菜单。这是一个显示所有打开的子窗体标题的特殊菜单,如图 6.15 所示。另外,有些应用程序将操纵子窗体的命令,比如“层叠”、“平铺”与“排列图标”,放在这个菜单中。
在 MDI 窗体或者 MDI 子窗体上的任何菜单控件,只要将其 WindowList属性设置为 True,都可以用于显示打开子窗体的清单。在运行时,VisualBasic 自动管理与显示标题清单,并在当前正有焦点的标题旁边显示一个复选标志。另外,在窗口清单的上方自动放置一个分隔符条。
要设置 WindowList 属性,请按照以下步骤执行:
1. 选取希望菜单出现其上的窗体,从“工具”菜单中,选取“菜单编辑器”。
注意 WindowList 属性只应用于 MDI 窗体和 MDI 子窗体。它对标准窗体(非 MDI)不起作用。
2. 在菜单编辑器列表框中,选取希望打开的子窗体的清单显示在其上的菜单。
3. 选取“WindowList”复选框。
在运行时,这个菜单显示打开的子窗体的清单。另外,这个菜单控件的WindowList 属性返回 True。
详细信息 请参阅《语言参考》的“WindowList 属性”。

排列子窗体
就像前面所提到的,有些应用程序把诸如平铺 (Tile)、层叠 (Cascade) 与排列图标 (Arrange Icons) 等操作列在和打开的子窗体列表的同一个菜单上。在 MDI 窗体中使用 Arrange 方法来重新对齐子窗体。可以层叠、水平平铺或者沿着 MDI 窗体的下部排列的子窗体图标等方式来显示子窗体。下面的实例示出了“层叠”、“平铺”和“排列图标”菜单控件的 Click 事件过程。
Private Sub mnuWCascade_Click ()
'层叠子窗体。
frmMDI.Arrange VBCascade
End Sub
Private Sub mnuWTile_Click ()
'平铺子窗体。
frmMDI.Arrange vbtileHorizontal
End Sub
Private Sub mnuWArrange_Click ()
'排列所有子窗体图标。
frmMDI.Arrange VBArrangeIcons
End Sub
注意 内部常数 VBCascade、vbtileHorizontal 和 vbArrangeIcons 都在对象浏览器的 Visual Basic (VB) 对象库中列出。
当
vb菜单在应用程序中的使用