Categories
BLOG

win ribbon

Windows Ribbon Framework

The Windows Ribbon framework is a rich command presentation system that provides a modern alternative to the layered menus, toolbars, and task panes of traditional Windows applications. Similar in functionality and appearance to the Microsoft Office 2007 Fluent user interface, the Ribbon framework is composed of a ribbon command bar that exposes the major features of an application through a series of tabs at the top of an application window, and a context menu system.

In this section

Topic Description
Ribbon Framework Overviews The topics contained in this section explore the fundamentals of the Ribbon framework.
Ribbon Framework Developer Guides The topics contained in this section describe specific aspects of the Windows Ribbon framework.
Ribbon Framework Control Library The topics contained in this section describe the set of controls that are included with the Ribbon framework. The controls listed here are the UI objects in a ribbon that expose Command functionality.
Ribbon Framework Reference The topics contained in this section provide the Reference specifications for the Ribbon framework.
Ribbon Framework Samples The topics contained in this section provide details about the code samples that support the Windows Ribbon framework documentation.
Ribbon Framework Glossary

Developer Audience

The Windows Ribbon framework is designed for use by C/C++ developers and UI designers.

  • COM programming
  • Windows API programming
  • XML/XAML programming

Recommended foundational knowledge:

  • UI programming concepts
  • General UI concepts

Minimum Requirements

Requirement Value
Minimum supported client Windows 7
Windows Vista with Service Pack 2 (SP2) and Platform Update for Windows Vista
Minimum supported server Windows Server 2008 R2
Windows Server 2008 with SP2 and Platform Update for Windows Server 2008
Windows Software Development Kit (SDK) 7.0
Header and IDL files uiribbon.h, uiribbon.idl

The Platform Update for Windows Vista and Platform Update for Windows Server 2008 are sets of run-time libraries that enable developers to target Windows Ribbon applications to both Windows Vista and Windows Server 2008. The platform updates will be available to all Windows Vista and Windows Server 2008 customers through Windows Update. Third-party applications that require Platform Update for Windows Vista or Platform Update for Windows Server 2008 can have Windows Update detect whether the required updated is installed; if it is not, Windows Update will download and install it in the background.

The Windows Ribbon framework is a rich command presentation system that provides a modern alternative to the layered menus, toolbars, and task panes of traditional Windows applications.

Introducing the Windows Ribbon Framework

The Windows Ribbon framework is a rich command presentation system that provides a modern alternative to the layered menus, toolbars, and task panes of traditional Windows applications.

A New Command Paradigm

The Ribbon framework is a collection of Microsoft Win32 APIs that support a host of new UI capabilities for Windows developers.

This rich, modern UI command framework offers:

  • Easy implementation for brand new Ribbon framework applications and straightforward migration of existing Win32 applications.
  • Consistent appearance and behavior across Ribbon applications.
  • Adherence to Windows UI guidelines for a first-class Windows experience through accessibility standards, visual style (theming) support, automatic high contrast adjustments, and high dots per inch (dpi) awareness.

The Ribbon framework consists of two primary UI components:

  • The ribbon command bar, which is composed of the Quick Access Toolbar (QAT) that exposes and highlights various ribbon commands as specified by the user or the application, and a tab row that contains the application menu, standard or contextual tabs, and a help button.
  • A rich context menu system.

A combination of declarative XML and native COM interfaces is used to decouple the presentation and functionality of these components.

Views

The primary UI components of the Ribbon framework, the ribbon command bar and the context menu system, are differentiated structurally through Views. The framework supports two Views: the Ribbon View and the ContextPopup View.

The Ribbon View

The UI of the Ribbon View is the primary feature of the Ribbon framework and provides the next-generation user experience for presenting commands in Windows applications.

The ribbon is a command bar that exposes the major features of an application through a series of tabs at the top of an application window. It is similar in functionality and appearance to the Microsoft Office 2007 Fluent UI. The ribbon provides an intuitive counterpoint to the trial-and-error process of command discovery that is typical of standard Windows menu systems. Optimized for efficiency and discoverability, the ribbon facilitates finding, understanding, and using commands with minimum mouse clicks and keystrokes through a system of standard controls, galleries, and live previewing.

The following image illustrates the Ribbon framework implementation in Paint for Windows 7.

The ContextPopup View

The ContextPopup View, through the Context Popup control, provides a richer context menu system than is available with earlier Windows applications. A Context Popup can only be deployed in support of a ribbon, a standalone Context Popup is not supported by the Ribbon framework.

Ribbon Architecture

In contrast to the traditional control-based Windows UI development model, Windows Ribbon framework UI development is based on the more abstract concept of Commands. By focusing on the Commands that are associated with controls, rather than the controls themselves, the framework is able to automatically adjust the UI as required in response to Command execution state retrieved from the Ribbon host application.

An application that uses the Ribbon framework exposes Commands without being encumbered with the details of how that Command is represented in the UI. This is sometimes referred to as an intent-based UI model. The Command type, its properties, and its resources define the intent of the Command for the application. For example, mouse input, keyboard input, or even shaking a gyroscopic device can result in the execution of the same Command the application is only concerned with executing the Command, not with how it was invoked.

The Ribbon framework provides this flexibility by separating functionality from presentation with two distinct development structures: an Extensible Application Markup Language (XAML)-based markup language to declare controls and the visual layout of a Ribbon implementation, and C++ COM-based interfaces to initialize the framework and handle events at run time. This distinction enables UI developers and designers to be solely responsible for the appearance of a Ribbon application, while core functionality remains the domain of software engineers.

The Ribbon APIs

The Ribbon APIs provide the necessary connections between a View and the Ribbon host application. These APIs consist of the following interfaces and property keys:

A set of COM interfaces implemented by the Ribbon framework to perform UI services.

Interface Description
IUIContextualUI Defines the methods for the core functionality of the ContextPopup View.
IUIFramework Defines the methods that support the core functionality of the Ribbon and ContextPopup Views.
IUIRibbon Defines the methods for specifying settings and properties for a Ribbon View.
IUISimplePropertySet Defines a method for retrieving the value identified by a property key. This interface is implemented by the Ribbon framework and is also implemented by the host application for each item in the IUICollection object of an item gallery.
When implemented by the host application, the method defined by this interface is used to retrieve a property key value for the selected item in the IUICollection.
IUICollection Defines the methods for dynamically manipulating collection-based controls, such as the Ribbon QAT and collection-based galleries, at run time.
IUIImage Defines the method for retrieving an image for display in the Ribbon UI.
IUIImageFromBitmap Defines the factory method for creating an IUIImage object.

A set of COM interfaces implemented by the Ribbon host application that the framework calls in response to UI changes.

Interface Description
IUIApplication Defines the application callback entry-point methods for the Ribbon framework.
IUICommandHandler Defines the methods for gathering Command information and handling Command events from the Ribbon framework.
IUICollectionChangedEvent Defines the method required to handle changes to a collection at run time.

A set of property keys that define which UI properties the application has programmatic control over.

Property Key Type Description
Collection Defines properties for Ribbon collection-based controls.
Color Picker Defines properties for Ribbon color picker controls.
Font Defines properties for the Ribbon FontControl.
Global Defines global properties for the Ribbon framework.
Resource Defines Ribbon resource properties.
Ribbon Defines Ribbon View properties.
State Defines properties for Ribbon control state or context.

Security and Privacy

The Ribbon framework DLL (uiribbon.dll) runs in-process and has the same privileges as the host application. The Ribbon accepts only what the host application provides as input or user input from tightly constrained controls such as the spinner and editable combo box.

In addition, the framework does not permanently store any information except what is provided by the host application or collected (as authorized by the end user) through the opt-in Windows Customer Experience Program.

Accessibility and Localization

To provide a highly accessible UI, the Ribbon framework implements Microsoft Active Accessibility. By automatically populating relevant Microsoft Active Accessibility properties with valid and helpful information, the framework significantly reduces the burden on developers to provide an inclusive experience for all users.

For more information on accessibility in the Ribbon framework, see Working with Active Accessibility in the 2007 Office Fluent User Interface.

In addition, the Ribbon framework is a Windows feature and, as such, is localized for all languages that Windows supports. Developers, however, are responsible for localizing their own specific application resources.

Conclusion

The Ribbon is a new and engaging form of command presentation that application developers, architects, and designers should consider when designing and building new applications or updating existing ones.

The Windows Ribbon Development Forum is available to discuss topics and ask questions related to developing applications that implement the Windows Ribbon framework.

The Windows Ribbon framework is a rich command presentation system that provides a modern alternative to the layered menus, toolbars, and task panes of traditional Windows applications. ]]>