显示功能区

Windows 功能区框架公开一组属性,这些属性允许应用程序指定功能区 UI 在运行时的显示方式。

简介

若要最大化功能区框架应用程序的文档空间 (或视图端口) 可用的区域,应用程序可以指定功能区 UI 是可见还是隐藏,以及功能区在可见时是处于展开状态还是折叠状态。

下表中列出的 框架属性键 用于在功能区框架应用程序中显式设置功能区 UI 的显示特征。 这些属性对 上下文弹出 控件的显示没有影响。

显示状态 功能区属性键
展开或折叠 UI_PKEY_Minimized
可见或隐藏 UI_PKEY_Viewable

 

最小化功能区

功能区框架应用程序可以通过将 UI_PKEY_Minimized 属性键的值设置为 truefalse 来动态设置功能区命令栏的最小化状态。

显示状态 属性键值
展开 false
Collapsed true

 

当功能区 UI 处于最小化状态时,功能区选项卡行将保持可见且完全正常运行。

以下屏幕截图显示了处于最小化状态的功能区。

显示功能区 ui 最小化的屏幕截图。

注意

功能区框架通过功能区上下文菜单的“最小化功能区”选项向最终用户公开此功能。

 

隐藏功能区

功能区框架应用程序可以通过将 UI_PKEY_Viewable 属性键的值设置为 truefalse 来动态设置功能区命令栏的可查看状态。

显示状态 属性键值
可见 false
Hidden true

 

UI_PKEY_Minimized 属性相比,将 UI_PKEY_Viewable 设置为 false 会使功能区 UI 不可见,并且对最终用户完全不可用。

以下屏幕截图显示了处于隐藏状态的功能区。

显示隐藏的功能区 ui 的屏幕截图。

示例

以下示例演示如何在运行时设置功能区 UI 的状态。

在这种情况下, IUICommandHandler::Execute 函数用于根据 切换按钮的切换状态来展开或折叠功能区 UI。

//
//  FUNCTION: Execute()
//
//  PURPOSE: Called by the Ribbon framework when a Command is executed 
//           by the user. 
//           This example demonstrates a handler for a Toggle Button
//           that sets the minimized state of the ribbon UI.
//
//  NOTES: g_pFramework is a global pointer to an IUIFramework object 
//         that is assigned when the Ribbon framework is initialized.
//
//         g_pRibbon is a global pointer to the IUIRibbon object
//         that is assigned when the Ribbon framework is initialized.
//
STDMETHODIMP CCommandHandler::Execute(
    UINT nCmdID,
    UI_EXECUTIONVERB verb,
    __in_opt const PROPERTYKEY* key,
    __in_opt const PROPVARIANT* ppropvarValue,
    __in_opt IUISimplePropertySet* pCommandExecutionProperties)
{
    HRESULT hr = E_FAIL;

    if (verb == UI_EXECUTIONVERB_EXECUTE)
    {
        switch (nCmdID)
        {
            // Minimize ribbon Command handler.
            case IDR_CMD_MINIMIZE:
                if (g_pFramework)
                {
                    IPropertyStore *pPropertyStore = NULL;
                    hr = g_pRibbon->QueryInterface(__uuidof(IPropertyStore), 
                                                   (void**)&pPropertyStore);
                    if (SUCCEEDED(hr))
                    {
                        if (ppropvarValue != NULL)
                        {
                            // Is the ToggleButton state on or off?
                            BOOL fToggled;
                            hr = UIPropertyToBoolean(*key, *ppropvarValue, &fToggled);

                            if (SUCCEEDED(hr))
                            {
                                // Set the ribbon display state based on the toggle state.
                                PROPVARIANT propvar;
                                PropVariantInit(&propvar);
                                UIInitPropertyFromBoolean(UI_PKEY_Minimized, 
                                                          fToggled, 
                                                          &propvar);
                                hr = pPropertyStore->SetValue(UI_PKEY_Minimized, 
                                                              propvar);
                                pPropertyStore->Commit();
                            }
                            pPropertyStore->Release();
                        }
                    }
                }
                break;
        }
    }
    return hr;
}

功能区属性