Symbolleiste für den Schnellzugriff

Die Schnellzugriffssymbolleiste (QAT) ist eine kleine, anpassbare Symbolleiste, die eine Reihe von Befehlen verfügbar macht, die von der Anwendung angegeben oder vom Benutzer ausgewählt werden.

Einführung

Standardmäßig befindet sich die Symbolleiste für den Schnellzugriff (QAT) in der Titelleiste des Anwendungsfensters, kann jedoch so konfiguriert werden, dass sie unterhalb des Menübands angezeigt wird. Zusätzlich zum Verfügbarmachen von Befehlen enthält die Schnellzugriffssymbolleiste (QAT) auch ein anpassbares Dropdownmenü, das den vollständigen Satz der Standardbefehle für die Schnellzugriffssymbolleiste (QAT) (ausgeblendet oder in der Symbolleiste für den Schnellzugriff (QAT) angezeigt wird) sowie eine Reihe von QaT-Optionen (Schnellzugriffssymbolleiste) und Menübandoptionen enthält.

Der folgende Screenshot zeigt ein Beispiel für die Menüband-Schnellzugriffssymbolleiste (QAT).

Screenshot des Qat-Objekts im Microsoft-Farbband.

Die Symbolleiste für den Schnellzugriff (QAT) besteht aus einer Kombination von bis zu 20 Befehlen, die entweder von der Anwendung angegeben (als Anwendungsstandardliste bezeichnet) oder vom Benutzer ausgewählt werden. Die Symbolleiste für den Schnellzugriff (QAT) kann eindeutige Befehle enthalten, die an anderer Stelle auf der Menübandbenutzeroberfläche nicht verfügbar sind.

Hinweis

Während fast alle Menübandsteuerelemente das Hinzufügen des zugehörigen Befehls zur Symbolleiste für den Schnellzugriff (QAT) über das Kontextmenü zulassen, das im folgenden Screenshot angezeigt wird, bieten Befehle, die in einem Kontext-Popup verfügbar gemacht werden, dieses Kontextmenü nicht.

Screenshot des Befehlskontextmenüs im Microsoft Paint-Menüband.

Implementieren der Symbolleiste für den Schnellzugriff

Wie bei allen Windows-Menübandframeworksteuerelementen erfordert die vollständige Nutzung der Schnellzugriffssymbolleiste (QAT) sowohl eine Markupkomponente, die die Präsentation im Menüband steuert, als auch eine Codekomponente, die die Funktionalität steuert.

Markup

Das QAT-Steuerelement (Quick Access Toolbar) wird deklariert und einer Befehls-ID im Markup über das QuickAccessToolbar-Element zugeordnet. Die Befehls-ID wird verwendet, um die Schnellzugriffssymbolleiste (QAT) zu identifizieren und an einen von der Anwendung definierten Befehlshandler zu binden.

Zusätzlich zum grundlegenden Befehlshandler für die primäre Schnellzugriffssymbolleiste (QAT) führt die Deklarierung des optionalen CustomizeCommandNameQuickAccessToolbar-Elementattributes dazu, dass das Framework der Befehlsliste des Dropdownmenüs "Schnellzugriffssymbolleiste" (QAT) ein Element "Weitere Befehle " hinzu fügt, für das ein sekundärer Befehlshandler definiert werden muss.

Aus Gründen der Konsistenz zwischen Menübandanwendungen wird empfohlen, dass der CustomizeCommandName-Befehlshandler ein QAT-Anpassungsdialogfeld (Schnellzugriffssymbolleiste) startet. Da das Menübandframework nur den Startpunkt auf der Benutzeroberfläche bereitstellt, ist die Anwendung allein für die Bereitstellung der Implementierung des Anpassungsdialogs verantwortlich, wenn die Rückrufbenachrichtigung für diesen Befehl empfangen wird.

Der folgende Screenshot zeigt ein Dropdownmenü der Symbolleiste für den Schnellzugriff (QAT) mit dem Element Weitere Befehle Befehl.

Screenshot eines Qat-Menüs mit den weiteren Befehlen... Befehlselement.

Die Anwendungsstandardliste für die Schnellzugriffssymbolleiste (QAT) wird über die QuickAccessToolbar.ApplicationDefaults-Eigenschaft angegeben, die eine Standardliste der empfohlenen Befehle identifiziert, die alle im Dropdownmenü Der Schnellzugriffssymbolleiste (QAT) aufgeführt sind.

Zum Anzeigen von Befehlen aus der Anwendungsstandardliste auf der Symbolleiste der Schnellzugriffssymbolleiste (QAT) muss das ApplicationDefaults.IsChecked-Attribut jedes Steuerelementelements den Wert aufweisen true. Die obigen Bilder zeigen die Ergebnisse des Festlegens dieses Attributs auf true für die Befehle Speichern, Rückgängig und Wiederholen .

QuickAccessToolbar.ApplicationDefaults unterstützt drei Arten von Menübandsteuerelementen: Schaltfläche, Schaltfläche umschalten und Kontrollkästchen.

Hinweis

Windows 8 und neuer: Alle katalogbasierten Steuerelemente werden unterstützt (ComboBox, InRibbonGallery, SplitButtonGallery und DropDownGallery).

Elemente in einem Katalogsteuerelement können das Hervorheben beim Zeigen unterstützen. Um die Hervorhebung des Mauszeigers zu unterstützen, muss der Katalog ein Elementkatalog sein und ein FlowMenuLayout vom Typ VerticalMenuLayout verwenden.

Im folgenden Beispiel wird das grundlegende Markup für ein QuickAccessToolbar-Element veranschaulicht.

In diesem Codeabschnitt werden die Befehlsdeklarationen für ein QAT-Element (Quick Access Toolbar) angezeigt.

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

In diesem Codeabschnitt werden die Steuerelementdeklarationen für ein QAT-Element (Quick Access Toolbar) angezeigt.

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

Code

Die Menübandframeworkanwendung muss eine Command-Handler-Rückrufmethode bereitstellen, um die Schnellzugriffssymbolleiste (QAT) zu bearbeiten. Dieser Handler funktioniert ähnlich wie Befehlskataloghandler, mit dem Unterschied, dass die Schnellzugriffssymbolleiste (QAT) keine Kategorien unterstützt. Weitere Informationen finden Sie unter Arbeiten mit Galerien.

Die QaT-Befehlsauflistung (Quick Access Toolbar) wird als IUICollection-Objekt über den UI_PKEY_ItemsSource-Eigenschaftenschlüssel abgerufen. Das Hinzufügen von Befehlen zur Schnellzugriffssymbolleiste (QAT) zur Laufzeit erfolgt durch Hinzufügen eines IUISimplePropertySet-Objekts zur IUICollection.

Im Gegensatz zu Befehlskatalogen ist eine Befehlstypeigenschaft (UI_PKEY_CommandType) für das IUISimplePropertySet-Objekt der Schnellzugriffssymbolleiste (QAT) nicht erforderlich. Der Befehl muss jedoch in der Menüband- oder QAT-Anwendungsstandardliste (Quick Access Toolbar) vorhanden sein. Ein neuer Befehl kann nicht zur Laufzeit erstellt und der Schnellzugriffssymbolleiste (QAT) hinzugefügt werden.

Hinweis

Die Menübandanwendung kann die IUICollection (Quick Access Toolbar, QAT) nicht durch ein benutzerdefiniertes Sammlungsobjekt ersetzen, das von IEnumUnknown abgeleitet ist.

Im folgenden Beispiel wird eine grundlegende QaT-Befehlshandlerimplementierung (Quick Access Toolbar) veranschaulicht.

/* 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;
  }
};

QAT-Persistenz

Schnellzugriffssymbolleiste (QAT) Befehlselemente und -einstellungen können mithilfe der Funktionen IUIRibbon::SaveSettingsToStream und IUIRibbon::LoadSettingsFromStream über Anwendungssitzungen hinweg beibehalten werden. Weitere Informationen finden Sie unter Beibehalten des Menübandstatus.

Eigenschaften der Symbolleiste für den Schnellzugriff

Das Menübandframework definiert eine Auflistung von Eigenschaftenschlüsseln für das QAT-Steuerelement (Quick Access Toolbar).

In der Regel wird eine QAT-Eigenschaft (Quick Access Toolbar) auf der Menübandbenutzeroberfläche aktualisiert, indem der dem Steuerelement zugeordnete Befehl durch einen Aufruf der IUIFramework::InvalidateUICommand-Methode ungültig wird. Das Invaliditätsereignis wird von der IUICommandHandler::UpdateProperty-Rückrufmethode behandelt und die Eigenschaft aktualisiert.

Die IUICommandHandler::UpdateProperty-Rückrufmethode wird nicht ausgeführt, und die Anwendung wird nach einem aktualisierten Eigenschaftswert abgefragt, bis die Eigenschaft vom Framework erforderlich ist. Beispielsweise, wenn eine Registerkarte aktiviert ist und ein Steuerelement auf der Menüband-Benutzeroberfläche angezeigt wird, oder wenn eine QuickInfo angezeigt wird.

Hinweis

In einigen Fällen kann eine Eigenschaft über die IUIFramework::GetUICommandProperty-Methode abgerufen und mit der IUIFramework::SetUICommandProperty-Methode festgelegt werden.

In der folgenden Tabelle sind die Eigenschaftenschlüssel aufgeführt, die dem QAT-Steuerelement (Schnellzugriffssymbolleiste) zugeordnet sind.

Eigenschaftenschlüssel Hinweise
UI_PKEY_ItemsSource Unterstützt IUIFramework::GetUICommandProperty ( IUIFramework::SetUICommandProperty wird nicht unterstützt). IUIFramework::GetUICommandProperty gibt einen Zeiger auf ein IUICollection-Objekt zurück, das die Befehle im QAT darstellt. Jeder Befehl wird durch seine Befehls-ID identifiziert, die durch Aufrufen der IUISimplePropertySet::GetValue-Methode und Übergeben des Eigenschaftenschlüssels UI_PKEY_CommandId abgerufen wird.

Es sind keine Eigenschaftenschlüssel vorhanden, die dem Element "Weitere Befehle Befehl" des Dropdownmenüs "Schnellzugriffssymbolleiste" (QAT) zugeordnet sind.