Windows 功能区框架简介

Windows 功能区框架是一个丰富的命令表示系统,它提供传统 Windows 应用程序的分层菜单、工具栏和任务窗格的新式替代方法。

新的命令范例

功能区框架是 Microsoft Win32 API 的集合,这些 API 为 Windows 开发人员支持大量新的 UI 功能。

此丰富的新式 UI 命令框架提供:

  • 轻松实现全新的功能区框架应用程序和直接迁移现有 Win32 应用程序。
  • 功能区应用程序的外观和行为一致。
  • 通过辅助功能标准、视觉风格 (主题) 支持、自动高对比度调整和每英寸高点数 (dpi) 感知,遵守 Windows UI 指南,获得一流的 Windows 体验。

功能区框架由两个主要 UI 组件组成:

  • 功能区命令栏,由快速访问工具栏 (QAT) 组成,可公开和突出显示用户或应用程序指定的各种功能区命令,以及包含应用程序菜单、标准或上下文选项卡以及帮助按钮的选项卡行。
  • 丰富的上下文菜单系统。

声明性 XML 和本机 COM 接口的组合用于分离这些组件的表示形式和功能。

视图

功能区框架的主要 UI 组件、功能区命令栏和上下文菜单系统通过 视图在结构上有所区别。 框架支持两个视图: 功能区 视图和 ContextPopup 视图。

功能区视图

功能区视图的 UI 是功能区框架的主要功能,提供下一代用户体验,用于在 Windows 应用程序中呈现命令。

功能区是一个命令栏,它通过应用程序窗口顶部的一系列选项卡公开应用程序的主要功能。 它在功能和外观上与 Microsoft Office 2007 Fluent UI 相似。 功能区为标准 Windows 菜单系统的典型命令发现试错过程提供了直观的对点。 功能区针对效率和可发现性进行优化,通过标准控件、库和实时预览系统,通过最少的鼠标单击和击键,有助于查找、理解和使用命令。

下图演示了适用于 Windows 7 的画图中的功能区框架实现。

显示 Windows 7 的画图中功能区实现的屏幕截图。

ContextPopup 视图

ContextPopup 视图通过上下文弹出控件提供比早期 Windows 应用程序更丰富的上下文菜单系统。 上下文弹出窗口只能在支持功能区的情况下部署,功能区框架不支持独立上下文弹出窗口。

功能区体系结构

与传统的基于控件的 Windows UI 开发模型不同,Windows 功能区框架 UI 开发基于更抽象的命令概念。 通过专注于与控件关联的命令,而不是控件本身,框架能够根据需要自动调整 UI,以响应从功能区主机应用程序检索到的命令执行状态。

使用功能区框架的应用程序公开命令,而不会受到 UI 中该命令如何表示的详细信息的阻碍。 这有时称为基于意向的 UI 模型。 命令类型、其属性及其资源定义应用程序的命令的意向。 例如,鼠标输入、键盘输入甚至摇动陀螺仪设备都可能导致执行与执行命令无关的相同命令,而与调用命令的方式无关。

功能区框架通过两种不同的开发结构将功能与演示文稿分开来提供这种灵活性:可扩展应用程序标记语言 (XAML) 基于 XAML 的标记语言,用于声明控件和功能区实现的可视布局,以及基于 C++ COM 的接口,用于初始化框架并在运行时处理事件。 这种区别使 UI 开发人员和设计人员能够单独负责功能区应用程序的外观,而核心功能仍由软件工程师负责。

有关详细信息,请参阅 了解命令和控件

功能区 API

功能区 API 在视图和功能区主机应用程序之间提供必要的连接。 这些 API 包含以下接口和属性键:

  • 由功能区框架实现的一组 COM 接口,用于执行 UI 服务。

    接口 说明
    IUIContextualUI 定义 ContextPopup 视图的核心功能的方法。
    IUIFramework 定义支持 功能区和ContextPopup 视图的核心功能的方法。
    IUIRibbon 定义用于指定 功能区 视图的设置和属性的方法。
    IUISimplePropertySet 定义用于检索由属性键标识的值的方法。 此接口由功能区框架实现,并且也由主机应用程序为项库的 IUICollection 对象中的每个项实现。
    由主机应用程序实现时,此接口定义的 方法用于检索 IUICollection 中所选项的属性键值。
    IUICollection 定义用于在运行时动态操作基于集合的控件的方法,例如功能区 QAT 和基于集合 的库
    IUIImage 定义用于检索要在功能区 UI 中显示的图像的方法。
    IUIImageFromBitmap 定义用于创建 IUIImage 对象的工厂方法。
  • 由功能区主机应用程序实现的一组 COM 接口,框架调用这些接口以响应 UI 更改。

    接口 说明
    IUIApplication 定义功能区框架的应用程序回调入口点方法。
    IUICommandHandler 定义用于从功能区框架收集命令信息和处理 Command 事件的方法。
    IUICollectionChangedEvent 定义在运行时处理集合更改所需的方法。
  • 一组属性键,用于定义应用程序可以编程控制哪些 UI 属性。

    属性键类型 描述
    集合 定义功能区基于集合的控件的属性。
    颜色选取器 定义功能区颜色选取器控件的属性。
    字体 定义功能区 FontControl 的属性。
    全球 定义功能区框架的全局属性。
    资源 定义功能区资源属性。
    丝带 定义功能区视图属性。
    State 定义功能区控件状态或上下文的属性。

安全性和隐私

功能区框架 DLL (uiribbon.dll) 进程内运行,具有与主机应用程序相同的权限。 功能区仅接受主机应用程序提供的内容作为输入或用户输入来自严格约束的控件,例如微调器和可编辑组合框。

此外,框架不会永久存储任何信息,除非主机应用程序提供的信息或收集的 (由最终用户授权,) 通过选择加入 Windows 客户体验计划。

辅助功能和本地化

为了提供高度可访问的 UI,功能区框架实现了 Microsoft Active Accessibility。 通过自动使用有效和有用的信息填充相关的 Microsoft Active Accessibility 属性,框架可显著减轻开发人员为所有用户提供包容性体验的负担。

有关功能区框架中的辅助功能的详细信息,请参阅 在 2007 Office Fluent 用户界面中使用活动辅助功能

此外,功能区框架是一项 Windows 功能,因此已针对 Windows 支持的所有语言进行本地化。 但是,开发人员负责本地化自己的特定应用程序资源。

结论

功能区是一种引人入胜的全新命令演示形式,应用程序开发人员、架构师和设计人员在设计和生成新应用程序或更新现有应用程序时应考虑此形式。

Windows 功能区开发论坛可用于讨论与开发实现 Windows 功能区框架的应用程序相关的主题和问题。

使用功能区标记声明命令和控件

功能区用户体验指南

功能区设计过程