Compartir a través de


Barra de herramientas de acceso rápido

La barra de herramientas de acceso rápido (QAT) es una pequeña barra de herramientas personalizable que expone un conjunto de comandos especificados por la aplicación o seleccionados por el usuario.

Introducción

Por defecto, la barra de herramientas de acceso rápido (QAT) se encuentra en la barra de título de la ventana de la aplicación, pero puede configurarse para que se muestre debajo de la cinta. Además de exponer comandos, la barra de herramientas de acceso rápido (QAT) también incluye un menú desplegable personalizable que contiene el conjunto completo de comandos predeterminados de la barra de herramientas de acceso rápido (QAT) (tanto si están ocultos como si se muestran en la barra de herramientas de acceso rápido (QAT)) y un conjunto de opciones de la barra de herramientas de acceso rápido (QAT) y de la cinta.

La siguiente captura de pantalla muestra un ejemplo de la barra de herramientas de acceso rápido (QAT) de la cinta de opciones.

captura de pantalla del qat en la cinta de microsoft paint.

La barra de herramientas de acceso rápido (QAT) consiste en una combinación de hasta 20 comandos especificados por la aplicación (conocida como la lista predeterminada de la aplicación) o seleccionados por el usuario. La barra de herramientas de acceso rápido (QAT) puede contener comandos exclusivos que no están disponibles en ninguna otra parte de la interfaz de usuario de la cinta.

Nota:

Mientras que casi todos los controles de cinta permiten añadir su Comando asociado a la Barra de herramientas de acceso rápido (QAT) a través del menú contextual que se muestra en la siguiente captura de pantalla, los Comandos expuestos en un Contexto emergente no proporciona este menú de contexto.

captura de pantalla del comando del menú de contexto en la cinta de microsoft paint.

implementar la barra de herramientas de acceso rápido

Como ocurre con todos los controles del marco de trabajo de la cinta de Windows, para aprovechar al máximo la barra de herramientas de acceso rápido (QAT) se necesita tanto un componente de marcado que controle su presentación dentro de la cinta como un componente de código que regule su funcionalidad.

marcado

El control de la barra de herramientas de acceso rápido (QAT) se declara y se asocia a un identificador de comando en el marcado mediante el QuickAccessToolbar elemento. El ID de comando se utiliza para identificar y vincular la barra de herramientas de acceso rápido (QAT) a un controlador de comando definido por la aplicación.

Además del controlador de comandos básico para la funcionalidad principal de la barra de herramientas de acceso rápido (QAT), la declaración del controlador opcional CustomizeCommandName QuickAccessToolbar hace que el framework añada un atributo Más comandos a la lista de comandos del menú desplegable de la barra de herramientas de acceso rápido (QAT) que requiere la definición de un controlador de comandos secundario.

Para mantener la coherencia en todas las aplicaciones de cinta, se recomienda que la opción CustomizeCommandName El controlador de comandos inicia un cuadro de diálogo de personalización de la barra de herramientas de acceso rápido (QAT). Dado que Ribbon framework solo proporciona el punto de inicio en la interfaz de usuario, la aplicación es la única responsable de proporcionar la implementación del cuadro de diálogo de personalización cuando se recibe la notificación de devolución de llamada para este comando.

La siguiente captura de pantalla muestra un menú desplegable de la barra de herramientas de acceso rápido (QAT) con los botones Más comandos elemento comando.

captura de pantalla de un menú qat con el elemento de comando más comandos....

La lista de valores predeterminados de la aplicación para la barra de herramientas de acceso rápido (QAT) se especifica mediante el QuickAccessToolbar.ApplicationDefaults que identifica una lista predeterminada de comandos recomendados, todos los cuales aparecen en el menú desplegable de la barra de herramientas de acceso rápido (QAT).

Para mostrar los comandos de la lista de valores predeterminados de la aplicación en la barra de herramientas de acceso rápido (QAT), el ApplicationDefaults.IsChecked atributo de cada elemento de control debe tener un valor de true. Las imágenes anteriores muestran los resultados de establecer este atributo en true para el Guardar, Deshacer, y Volver a hacer Comandos.

QuickAccessToolbar.ApplicationDefaults soporta tres tipos de controles de lazos: Bot´´on, Toggle Button, y casilla de verificación.

Nota:

Windows 8 y versiones posteriores: Todos los controles basados en galerías son compatibles (ComboBox, InRibbonGallery, SplitButtonGallery, y DropDownGallery).

Los elementos de un control de galería se pueden resaltar al pasar el ratón por encima. Para soportar el resaltado hover, la galería debe ser una galería de elementos y utilizar un FlowMenuLayout de tipo VerticalMenuLayout.

El siguiente ejemplo muestra el marcado básico de un archivo QuickAccessToolbar elemento.

Esta sección de código muestra las declaraciones de comandos para un Quick Access Toolbar (QAT) elemento.

<Command Name="cmdQAT"
         Symbol="ID_QAT"
         Id="40000"/>
<Command Name="cmdCustomizeQAT"
         Symbol="ID_CUSTOM_QAT"
         Id="40001"/>

Esta sección de código muestra las declaraciones de control para un Quick Access Toolbar (QAT) elemento.

      <Ribbon.QuickAccessToolbar>
        <QuickAccessToolbar CommandName="cmdQAT"
                            CustomizeCommandName="cmdCustomizeQAT">
          <QuickAccessToolbar.ApplicationDefaults>
            <Button CommandName="cmdButton1"/>
            <ToggleButton CommandName="cmdMinimize"
                          ApplicationDefaults.IsChecked="false"/>
          </QuickAccessToolbar.ApplicationDefaults>
        </QuickAccessToolbar>
      </Ribbon.QuickAccessToolbar>

Código

La aplicación Ribbon Framework debe proporcionar un método de devolución de llamada del controlador de comandos para manipular la barra de herramientas de acceso rápido (QAT). La aplicación Ribbon Framework debe proporcionar un método de devolución de llamada del controlador de comandos para manipular la barra de herramientas de acceso rápido (QAT). Para más información, véase Trabajar con galerías.

La colección de comandos de la barra de herramientas de acceso rápido (QAT) se recupera como un IUICollection objeto a través de UI_PKEY_ItemsSource clave de propiedad. La adición de comandos a la barra de herramientas de acceso rápido (QAT) en tiempo de ejecución se realiza añadiendo un IUISimplePropertySet objecto al IUICollection.

A diferencia de las galerías de comandos, una propiedad de tipo comando (UI_PKEY_CommandType) no es necesario para la barra de herramientas de acceso rápido (QAT) IUISimplePropertySet objecto. Sin embargo, el comando debe existir en la cinta de opciones o en la lista de valores predeterminados de la aplicación de la barra de herramientas de acceso rápido (QAT); no se puede crear un nuevo comando en tiempo de ejecución y añadirlo a la barra de herramientas de acceso rápido (QAT).

Nota:

La aplicación Ribbon no puede sustituir a la barra de herramientas de acceso rápido (QAT) IUICollection con un objeto de colección personalizado derivado de IEnumUnknown.

El siguiente ejemplo muestra una implementación Básico de un controlador de comandos de la barra de herramientas de acceso rápido (QAT).

/* QAT COMMAND HANDLER IMPLEMENTATION */
class CQATCommandHandler
      : public CComObjectRootEx<CComMultiThreadModel>
      , public IUICommandHandler
{
  public:
    BEGIN_COM_MAP(CQATCommandHandler)
      COM_INTERFACE_ENTRY(IUICommandHandler)
    END_COM_MAP()

    // QAT command handler's Execute method
    STDMETHODIMP Execute(UINT nCmdID,
                         UI_EXECUTIONVERB verb, 
                         const PROPERTYKEY* key,
                         const PROPVARIANT* ppropvarValue,
                         IUISimplePropertySet* pCommandExecutionProperties)
    {
      UNREFERENCED_PARAMETER(nCmdID);
      UNREFERENCED_PARAMETER(verb);
      UNREFERENCED_PARAMETER(ppropvarValue);
      UNREFERENCED_PARAMETER(pCommandExecutionProperties);

      // Do not expect Execute callback for a QAT command
      return E_NOTIMPL;
    }

    // QAT command handler's UpdateProperty method
    STDMETHODIMP UpdateProperty(UINT nCmdID,
                                REFPROPERTYKEY key,
                                const PROPVARIANT* ppropvarCurrentValue,
                                PROPVARIANT* ppropvarNewValue)
    {
      UNREFERENCED_PARAMETER(nCmdID);
      UNREFERENCED_PARAMETER(ppropvarNewValue);

      HRESULT hr = E_NOTIMPL;

      if (key == UI_PKEY_ItemsSource)
      {
        ATLASSERT(ppropvarCurrentValue->vt == VT_UNKNOWN);

        CComQIPtr<IUICollection> spCollection(ppropvarCurrentValue->punkVal);

        UINT nCount;
        if (SUCCEEDED(hr = spCollection->GetCount(&nCount)))
        {
          if (nCount == 0)
          {
            // If the current Qat list is empty, then we will add a few items here.
            UINT commands[] =  { cmdSave, cmdUndo};

            int count = _countof(commands);

            for (int i = 0; i < count; i++)
            {
              PROPERTYKEY keys[1] = {UI_PKEY_CommandId};
              CComObject<CItemProperties> *pItem = NULL;
              if (SUCCEEDED(CComObject<CItemProperties>::CreateInstance(&pItem)))
              {
                PROPVARIANT vars[1];

                InitPropVariantFromUInt32(commands[i], &vars[0]);

                pItem->Initialize(NULL, _countof(vars), keys, vars);

                CComPtr<IUnknown> spUnknown;
                pItem->QueryInterface(&spUnknown);
                spCollection->Add(spUnknown);
                            
                FreePropVariantArray(_countof(vars), vars);
              }
            }
          }
          else
          {
            // Do nothing if the Qat list is not empty.
            // Return S_FALSE to indicate the callback succeeded.
            return S_FALSE; 
          }
        }
      }
    return hr;
  }
};

Persistente QAT

Los elementos de comando y la configuración de la barra de herramientas de acceso rápido (QAT) se pueden conservar en todas las sesiones de la aplicación mediante la función IUIRibbon::SaveSettingsToStream y IUIRibbon::LoadSettingsFromStream funciones. Para más información, consulte Estado de la cinta persistente.

Propiedades de la barra de herramientas de acceso rápido

El marco de trabajo Ribbon define una colección de claves de propiedad para el control de la barra de herramientas de acceso rápido (QAT).

Normalmente, una propiedad de la barra de herramientas de acceso rápido (QAT) se actualiza en la interfaz de usuario de la cinta invalidando el comando asociado al control mediante una llamada a la función IUIFramework::InvalidateUICommand método. El evento de invalidación se gestiona, y las actualizaciones de las propiedades se definen, mediante el IUICommandHandler::UpdateProperty método de devolver llamada.

El evento de invalidación se gestiona, y las actualizaciones de las propiedades se definen, mediante el IUICommandHandler::UpdateProperty método de devolver llamada no se ejecuta, y la aplicación consulta un valor de propiedad actualizado, hasta que la propiedad es requerida por el framework. Por ejemplo, cuando se activa una pestaña y se muestra un control en la interfaz de usuario de la cinta de opciones, o cuando se muestra una información sobre herramientas.

Nota:

En algunos casos, una propiedad puede recuperarse a través de la función IUIFramework::GetUICommandProperty y configurado con el método IUIFramework::SetUICommandProperty método.

En la tabla siguiente se enumeran las teclas de propiedad asociadas al control Barra de herramientas de acceso rápido (QAT).

Clave de propiedad Notas
UI_PKEY_ItemsSource Soporta IUIFramework::GetUICommandProperty (no soporta IUIFramework::SetUICommandProperty).IUIFramework::GetUICommandProperty devuelve un puntero a un objeto IUICollection que representa los comandos en el QAT. Cada comando se identifica por su ID de comando, que se obtiene llamando a la función IUISimplePropertySet::GetValue método e introduciendo la clave de la propiedad UI_PKEY_CommandId.

No hay claves de propiedad asociadas con los Más comandos elemento comando del menú desplegable de la barra de herramientas de acceso rápido (QAT)