Windows 功能區架構簡介
Windows 功能區架構是豐富的命令表示系統,可提供傳統 Windows 應用程式階層式功能表、工具列和工作窗格的新式替代方案。
新的命令範例
功能區架構是 Microsoft WIN32 API 的集合,可支援 Windows 開發人員的一系列新 UI 功能。
這個豐富的新式 UI 命令架構提供:
- 輕鬆實作全新的功能區架構應用程式,以及直接移轉現有的 Win32 應用程式。
- 功能區應用程式之間的一致外觀和行為。
- 透過協助工具標準、視覺化樣式 (主題) 支援、自動高對比調整,以及每英吋的高點數 (DPI) 感知,遵循 Windows UI 指導方針。
功能區架構包含兩個主要 UI 元件:
- 功能區命令列是由快速存取工具列 (QAT) 所組成,其會公開並醒目提示使用者或應用程式所指定的各種功能區命令,以及包含應用程式功能表、標準或關聯式索引標籤和說明按鈕的索引標籤資料列。
- 豐富的操作功能表系統。
宣告式 XML 和原生 COM 介面的組合可用來分離這些元件的呈現和功能。
檢視
功能區架構的主要 UI 元件、功能區命令列和操作功能表系統,會透過檢 視以結構化方式區分。 此架構支援兩個檢視: 功能區 檢視和 CoNtextPopup 檢視。
功能區檢視
功能區檢視的 UI 是功能區架構的主要功能,並提供新一代的使用者體驗,以在 Windows 應用程式中呈現命令。
功能區是一個命令列,可透過應用程式視窗頂端的一系列索引標籤來公開應用程式的主要功能。 其功能與外觀類似 Microsoft Office 2007 Fluent UI。 功能區提供命令探索的直覺式計數器點,這是標準 Windows 功能表系統的典型嘗試和錯誤程式。 針對效率和可探索性優化,功能區可透過標準控制項、資源庫和即時預覽系統,以最少的滑鼠點選和按鍵來協助尋找、瞭解和使用命令。
下圖說明 Paint for Windows 7 中的功能區架構實作。
CoNtextPopup 檢視
CoNtextPopup檢視透過內容快顯控制項提供比舊版 Windows 應用程式更豐富的操作功能表系統。 內容快顯只能部署在支援功能區中,功能區架構不支援獨立內容快顯。
功能區架構
相較于傳統以控制項為基礎的 Windows UI 開發模型,Windows 功能區架構 UI 開發是以命令的更抽象概念為基礎。 藉由將焦點放在與控制項相關聯的命令,而不是控制項本身,架構就能夠視需要自動調整 UI,以回應從功能區主應用程式擷取的命令執行狀態。
使用功能區架構的應用程式會公開 Commands,而不需使用 UI 中呈現該 Command 的詳細資料。 這有時稱為意圖型 UI 模型。 Command 類型、其屬性和其資源會定義應用程式的 Command 意圖。 例如,滑鼠輸入、鍵盤輸入,或甚至震動 gyroscopic 裝置可能會導致執行相同的 Command,應用程式只會考慮執行 Command,而不是叫用命令的方式。
功能區架構提供這項彈性,方法是將功能與兩個不同的開發結構分開:可延伸應用程式標記語言 (XAML) 型標記語言,以宣告功能區實作的控制項和視覺化配置,以及 C++ COM 型介面,以在執行時間初始化架構及處理事件。 這項區別可讓 UI 開發人員和設計工具完全負責功能區應用程式的外觀,而核心功能仍是軟體工程師的領域。
如需詳細資訊,請參閱 瞭解命令和控制項。
功能區 API
功能區 API 提供檢視與功能區主應用程式之間的必要連線。 這些 API 包含下列介面和屬性索引鍵:
功能區架構實作的一組 COM 介面,可執行 UI 服務。
介面 描述 IUICoNtextualUI 定義 CoNtextPopup View 核心功能的方法。 IUIFramework 定義支援 功能區和CoNtextPopup 檢視核心功能的方法。 IUIRibbon 定義指定 功能區 檢視之設定和屬性的方法。 IUISimplePropertySet 定義方法,以擷取屬性索引鍵所識別的值。 這個介面是由功能區架構所實作,而且也會由專案庫 之 IUICollection 物件中每個專案的主應用程式實作。
由主應用程式實作時,這個介面所定義的 方法會用來擷取 IUICollection中所選項目的屬性值。IUICollection 定義在執行時間動態操作集合型控制項的方法,例如功能區 QAT 和集合型 資源庫。 IUIImage 定義在功能區 UI 中擷取要顯示之影像的方法。 IUIImageFromBitmap 定義建立 IUIImage 物件的 Factory 方法。 功能區主應用程式所實作的一組 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 功能區架構的應用程式相關的問題。