Dela via


Verktygsfältet Snabbåtkomst

Verktygsfältet snabbåtkomst (QAT) är ett litet, anpassningsbart verktygsfält som exponerar en uppsättning kommandon som anges av programmet eller väljs av användaren.

Införandet

Som standard finns verktygsfältet snabbåtkomst (QAT) i namnlisten i programfönstret men kan konfigureras att visas under menyfliksområdet. Förutom att exponera kommandon innehåller verktygsfältet snabbåtkomst (QAT) även en anpassningsbar nedrullningsbar meny som innehåller den fullständiga uppsättningen standardkommandon för verktygsfältet snabbåtkomst (QAT) (oavsett om de är dolda eller visas i verktygsfältet snabbåtkomst (QAT)) och en uppsättning verktygsfält för snabbåtkomst (QAT) och menyfliksområdet.

Följande skärmbild visar ett exempel på verktygsfältet snabbåtkomst i menyfliksområdet (QAT).

skärmdump av qat i Microsofts färgband.

Verktygsfältet Snabbåtkomst (QAT) består av en kombination av upp till 20 kommandon som antingen anges av programmet (kallas standardlistan för programmet) eller som valts av användaren. Verktygsfältet Snabbåtkomst (QAT) kan innehålla unika kommandon som inte är tillgängliga någon annanstans i menyfliksområdets användargränssnitt.

Not

Nästan alla menyflikskontroller tillåter att deras associerade kommando läggs till i verktygsfältet snabbåtkomst (QAT) via snabbmenyn som visas i följande skärmbild, men kommandon som exponeras i ett Popup-fönster för kontext tillhandahåller inte den här snabbmenyn.

skärmbild av kommandokontextmenyn i menyfliksområdet Microsoft Paint.

Implementera verktygsfältet Snabbåtkomst

Precis som med alla Windows Ribbon-ramverkskontroller kräver användning av verktygsfältet snabbåtkomst (QAT) både en markeringskomponent som styr presentationen i menyfliksområdet och en kodkomponent som styr dess funktioner.

Markup

Kontrollen Verktygsfält för snabbåtkomst (QAT) deklareras och associeras med ett kommando-ID i markering via elementet QuickAccessToolbar. Kommando-ID:t används för att identifiera och binda verktygsfältet snabbåtkomst (QAT) till en kommandohanterare som definierats av programmet.

Förutom den grundläggande kommandohanteraren för qat-funktionen (Primary Quick Access Toolbar) gör de valfria CustomizeCommandNameQuickAccessToolbar elementattribut att ramverket lägger till ett Fler kommandon objekt i kommandolistan i snabbåtkomstverktygsfältet (QAT) som kräver att en sekundär kommandohanterare definieras.

För konsekvens mellan menyfliksprogram rekommenderar vi att AnpassaCommandName kommandohanterare startar en dialogruta för anpassning av verktygsfältet snabbåtkomst (QAT). Eftersom Ribbon-ramverket endast tillhandahåller startpunkten i användargränssnittet är programmet ensamt ansvarigt för att tillhandahålla implementeringen av anpassningsdialogrutan när återanropsmeddelandet för det här kommandot tas emot.

Följande skärmbild visar en snabbåtkomstverktygsmeny (QAT) med Fler kommandon kommandoobjektet.

skärmdump av en qat-meny med fler kommandon... kommandoobjekt.

Standardlistan för programmet för verktygsfältet snabbåtkomst (QAT) anges via QuickAccessToolbar.ApplicationDefaults egenskap som identifierar en standardlista med rekommenderade kommandon, som alla visas i listrutan Verktygsfält för snabbåtkomst (QAT).

Om du vill visa kommandon från listan med standardvärden för programmet i verktygsfältet Snabbåtkomst (QAT) måste ApplicationDefaults.IsChecked attribut för varje kontrollelement ha värdet true. Föregående bilder visar resultatet av att ange det här attributet till true för Spara, Ångraoch Gör om kommandon.

QuickAccessToolbar.ApplicationDefaults stöder tre typer av menyflikskontroller: Knapp, Växla knappoch kryssruta.

Not

Windows 8 och senare: Alla galleribaserade kontroller stöds (ComboBox, InRibbonGallery, SplitButtonGalleryoch DropDownGallery).

Objekt i en gallerikontroll kan ha stöd för markering vid hovring. För att stöda hovringsmarkeringar måste galleriet vara ett objektgalleri och använda ett FlowMenuLayout- av typen VerticalMenuLayout.

I följande exempel visas den grundläggande markering för ett QuickAccessToolbar--element.

Det här kodavsnittet visar kommandodeklarationer för ett qat-element (Quick Access Toolbar) element.

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

Det här kodavsnittet visar kontrolldeklarationerna för ett qat-element (Quick Access Toolbar).

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

Kod

Ribbon Framework-programmet måste tillhandahålla en kommandohanteraråteranropsmetod för att ändra verktygsfältet för snabbåtkomst (QAT). Den här hanteraren fungerar på ett liknande sätt som kommandogallerihanterare, förutom att verktygsfältet snabbåtkomst (QAT) inte stöder kategorier. Mer information finns i Arbeta med gallerier.

Kommandosamlingen För snabbåtkomst (QAT) hämtas som ett IUICollection- objekt via UI_PKEY_ItemsSource-egenskapsnyckeln. Du kan lägga till kommandon i verktygsfältet snabbåtkomst (QAT) vid körning genom att lägga till ett IUISimplePropertySet-objekt i IUICollection-.

Till skillnad från kommandogallerier krävs ingen kommandotypsegenskap (UI_PKEY_CommandType) för verktygsfältet Snabbåtkomst (QAT) IUISimplePropertySet-objektet. Kommandot måste dock finnas i menyfliksområdet eller i qat-programmets standardlista(Quick Access Toolbar). Det går inte att skapa ett nytt kommando vid körning och läggas till i verktygsfältet Snabbåtkomst (QAT).

Not

Menyfliksprogrammet kan inte ersätta verktygsfältet snabbåtkomst (QAT) IUICollection med ett anpassat samlingsobjekt som härletts från IEnumUnknown.

I följande exempel visas en grundläggande implementering av qat-kommandohanterare (Quick Access Toolbar).

/* 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-beständighet

Kommandoobjekt och inställningar för snabbåtkomst (QAT) kan sparas mellan programsessioner med hjälp av IUIRibbon::SaveSettingsToStream och IUIRibbon::LoadSettingsFromStream functions. Mer information finns i bevarar menyfliksområdets tillstånd.

Egenskaper för verktygsfältet Snabbåtkomst

Menyfliksområdet definierar en samling egenskapsnycklar för kontrollen Verktygsfält för snabbåtkomst (QAT).

Vanligtvis uppdateras en qat-egenskap (Verktygsfält för snabbåtkomst) i menyfliksområdet genom att kommandot som är associerat med kontrollen ogiltigförklaras via ett anrop till IUIFramework::InvalidateUICommand-metoden. Ogiltighetshändelsen hanteras och egenskapsuppdateringarna definieras av metoden IUICommandHandler::UpdateProperty motringning.

Metoden IUICommandHandler::UpdateProperty motringning körs inte och programmet efterfrågade ett uppdaterat egenskapsvärde tills egenskapen krävs av ramverket. Till exempel när en flik aktiveras och en kontroll visas i menyfliksområdets användargränssnitt, eller när en knappbeskrivning visas.

Not

I vissa fall kan en egenskap hämtas via metoden IUIFramework::GetUICommandProperty och ställas in med metoden IUIFramework::SetUICommandProperty.

I följande tabell visas de egenskapsnycklar som är associerade med qat-kontrollen (Quick Access Toolbar).

Egenskapsnyckel Anteckningar
UI_PKEY_ItemsSource Stöder IUIFramework::GetUICommandProperty (stöder inte IUIFramework::SetUICommandProperty).IUIFramework::GetUICommandProperty returnerar en pekare till ett IUICollection-objekt som representerar kommandona i QAT. Varje kommando identifieras av dess kommando-ID, som hämtas genom att anropa metoden IUISimplePropertySet::GetValue och skicka in egenskapsnyckeln UI_PKEY_CommandId.

Det finns inga egenskapsnycklar som är associerade med fler kommandon kommandoobjektet i snabbåtkomstverktygsfältet (QAT) nedrullningsbara menyn