在 MDI 应用程序中,每一个子窗体的菜单都显示在 MDI 窗体上,而不是在子窗体本身。当子窗体有焦点时,该子窗体的菜单(如果有的话)就代替菜单栏上的 MDI 窗体的菜单。如果没有可见的子窗体,或者如果带有焦点的子窗体没有菜单,则显示 MDI 窗体的菜单(见图 6.14 和 6.15)。MDI 应用程序使用几套菜单的情况很普遍。当打开一个文档时,应用程序显示与该类文档相关的菜单。通常,当没有可见子窗体时,会显示一个不同的菜单。例如,当没有文件打开时,Microsoft Excel 只显示“文件”与“帮助”菜单。当用户打开一个文件时,其他菜单就会显示出来(“文件”、“编辑”、“视图”、“插入”、“格式”、“工具”、“数据”和“窗口”等等)。创建 MDI 应用程序的菜单 
通过给 MDI 窗体和子窗体添加菜单控件,可以为 Visual Basic 应用程序创建菜单。管理 MDI 应用程序中菜单的一个方法是把希望在任何时候都显示的菜单控件放在 MDI 窗体上(即使没有子窗体可见时)。当运行该应用程序时,如果没有可见的子窗体,会自动显示 MDI 窗体菜单,如图 6.14 所示。图 6.14 当没有子窗体被加载时,显示 MDI 窗体把应用于子窗体的菜单控件放置到子窗体中。在运行时,只要有一个子窗体可见,这些菜单标题就会显示在 MDI 窗体的菜单栏中。有些应用程序支持多种类型的文档。例如,在 Microsoft Access 中,可以打开表格、查询、窗体和其它文档类型。要在 Visual Basic 中创建这样的应用程序,应使用两个子窗体。设计一个带有执行工作单任务菜单的子窗体和另一个带有完成图表任务菜单的子窗体。在运行时,当工作单窗体的实例有焦点时,则显示工作单菜单,而当选取图表时,则显示图表窗体的菜单。如果所有的工作单和图表都关闭,则显示 MDI 窗体的菜单。关于创建菜单的详细内容,请参阅本章前面的“在应用程序中使用菜单”部分。创建“窗口”菜单
大多数 MDI 应用程序(例如:Microsoft Word for Windows 与 Microsoft Excel)都结合了“窗口”菜单。这是一个显示所有打开的子窗体标题的特殊菜单,如图 6.15 所示。另外,有些应用程序将操纵子窗体的命令,比如“层叠”、“平铺”与“排列图标”,放在这个菜单中。图 6.15 “窗口”菜单显示每个打开子窗体的名称在 MDI 窗体或者 MDI 子窗体上的任何菜单控件,只要将其 WindowList 属性设置为 True,都可以用于显示打开子窗体的清单。在运行时,Visual Basic 自动管理与显示标题清单,并在当前正有焦点的标题旁边显示一个复选标志。另外,在窗口清单的上方自动放置一个分隔符条。要设置 WindowList 属性,请按照以下步骤执行: 选取希望菜单出现其上的窗体,从“工具”菜单中,选取“菜单编辑器”。 
注意 WindowList 属性只应用于 MDI 窗体和 MDI 子窗体。它对标准窗体(非 MDI)不起作用。在菜单编辑器列表框中,选取希望打开的子窗体的清单显示在其上的菜单。