框架窗口管理更新用户界面对象,包括菜单、工具栏按钮、状态栏和加速器。 它还管理在 MDI 应用程序中共享菜单栏。
管理菜单
框架窗口使用“ 如何更新 User-Interface 对象”中所述的ON_UPDATE_COMMAND_UI机制参与更新用户界面项。 在空闲循环期间,工具栏和其他控制栏上的按钮会更新。 菜单栏下拉菜单中的菜单项在菜单下拉列表之前更新。
对于 MDI 应用程序,MDI 框架窗口管理菜单栏和标题。 当没有活动的 MDI 子窗口时,MDI 框架窗口拥有一个默认菜单,该菜单用作菜单栏。 当存在活动子级时,活动 MDI 子窗口的菜单栏由活动 MDI 子窗口的菜单接管。 如果 MDI 应用程序支持多个文档类型(如图表和工作表文档),则每种类型都会将自己的菜单放入菜单栏中,并更改主框架窗口的标题。
CMDIFrameWnd 为 MDI 应用程序显示的“窗口”菜单上的标准命令提供默认实现。 具体而言,实现了“新建窗口”命令(ID_WINDOW_NEW)以创建新的框架窗口和当前文档的视图。 仅当需要高级自定义时,才需要重写这些实现。
同一文档类型共享菜单资源的多个 MDI 子窗口。 如果多个 MDI 子窗口由同一文档模板创建,则它们都可以使用相同的菜单资源,从而节省 Windows 中的系统资源。
管理状态栏
框架窗口还会将状态栏置于其工作区中,并管理状态栏的指示器。 框架窗口根据需要清除和更新状态栏中的消息区域,并在用户选择菜单项或工具栏按钮时显示提示字符串,如 “如何在状态栏中显示命令信息”中所述。
管理加速器
每个框架窗口都会维护一个可选快捷键表,该表会自动执行键盘快捷键翻译。 使用此机制可以轻松定义调用菜单命令的快捷键(也称为快捷键)。