Dela via


Drop-Down färgväljare

Windows Ribbon-ramverket innehåller en specialiserad Drop-Down färgväljare som exponerar en mängd olika färginställningar via en delad knapp och anpassningsbar listrutefärgväljare.

Införandet

Genom att emulera utseendet och funktionerna i Microsoft Office-färgväljaren kan Ribbon-ramverket både dra nytta av och bidra till konsekvens och förtrogenhet i en mängd olika program.

Markup

Precis som alla kontroller i menyfliksområdet implementeras och anpassas Drop-Down färgväljaren enkelt via markering. Ramverket innehåller ett antal elementattribut för Drop-Down Color Picker för att exponera olika funktionsnivåer. I följande tabell visas attributen Drop-Down Color Picker.

Attribut Beskrivning
ColorTemplate Layoutmallar som anger typen av Drop-Down färgväljare.
Det finns tre mallar som var och en anger en kontrolllayout och standardvärden för associerade attribut och egenskapsnycklar.
  • ThemeColors
  • StandardColors
  • HighlightColors
ChipSize Storleken på varje färgchip (eller färgruta).
  • Small
  • Medium
  • Large
Kolumner Antalet kolumner med färgchips (eller färgur).
CommandName Namnet på den associerade kommandodeklarationen.
IsAutomaticColorButtonVisible Visar (eller döljer) knappen Automatisk.
Gäller endast när ColorTemplate har värdet ThemeColors eller StandardColors.
IsNoColorButtonVisible Visar (eller döljer) knappen Ingen färg.
Giltigt för alla ColorTemplate- värden.
RecentColorGridRows Antalet färgchipsrader (eller färgur) i Senaste färger område.
Gäller endast när ColorTemplate har värdet ThemeColors.
StandardColorGridRows Antalet färgchipsrader (eller färgur) i standardfärger område.
ThemeColorGridRows Antalet färgchipsrader (eller färgur) i Temafärger område.
Gäller endast när ColorTemplate har värdet ThemeColors.

Följande skärmbilder illustrerar standardlayouterna för Drop-Down Färgväljare för de tre färgmallarna.

     
ThemeColors:[newline] skärmbild av elementet dropdowncolorpicker med attributet colortemplate inställt på [ny rad] standardcolors:[newline] skärmbild av elementet dropdowncolorpicker med attributet colortemplate inställt på [ny rad] highlightcolors:[newline] skärmbild av elementet dropdowncolorpicker med attributet colortemplate inställt på

Den grundläggande markering som krävs för varje Drop-Down färgväljare visas i följande exempel:

Not

Drop-Down Color Picker är en giltig knapp kontroll i en SizeDefinition-mall.

<!-- DropDownColorPickers -->
<Command Name="cmdDropDownColorPickerGroup"
         Symbol="cmdDropDownColorPickerGroup"
         Comment="DropDownColorPicker Group"
         Id="55000"/>
<Command Name="cmdDropDownColorPickerThemeColors"
         Symbol="cmdDropDownColorPickerThemeColors"
         Comment="DropDownColorPicker ThemeColors"
         Id="55010"
         LabelTitle="ThemeColors"
         LabelDescription="ThemeColors\ndescription."/>
<Command Name="cmdDropDownColorPickerStandardColors"
         Symbol="cmdDropDownColorPickerStandardColors"
         Comment="DropDownColorPicker StandardColors"
         Id="55011"
         LabelTitle="StandardColors"/>
<Command Name="cmdDropDownColorPickerHighlightColors"
         Symbol="cmdDropDownColorPickerHighlightColors"
         Comment="DropDownColorPicker HighlightColors"
         Id="55012"
         LabelTitle="HighlightColors"/>

<Group CommandName=&quot;cmdDropDownColorPickerGroup&quot;
       SizeDefinition=&quot;ThreeButtons&quot;>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerThemeColors&quot;
    ColorTemplate=&quot;ThemeColors&quot;/>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerStandardColors&quot;
    ColorTemplate=&quot;StandardColors&quot;/>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerHighlightColors&quot;
    ColorTemplate=&quot;HighlightColors&quot;
    StandardColorGridRows=&quot;1&quot;/>
</Group>

Kod

Som en specialiserad kontroll som stöder anpassning krävs särskild programkod för att hantera egenskaper och hantera kommandon som utfärdas av kontrollen för varje implementering av Drop-Down färgväljare som utnyttjar dessa funktioner.

Egenskaper

Menyfliksområdet definierar en samling egenskapsnycklar för kontrollen Drop-Down Färgväljare.

Vanligtvis uppdateras en Drop-Down color picker-egenskap i menyfliksområdets användargränssnitt genom att kommandot som är associerat med kontrollen ogiltigförklaras via ett anrop till metoden IUIFramework::InvalidateUICommand. Ogiltighetshändelsen hanteras och egenskapsuppdateringarna definieras av IUICommandHandler::UpdateProperty återanropsmetod.

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 anges med metoden IUIFramework::SetUICommandProperty.

I följande tabell visas de egenskapsnycklar som är associerade med kontrollen Drop-Down Färgväljare.

Egenskapsnyckel Beskrivning Anteckningar
UI_PKEY_AutomaticColorLabel Definierar etiketten för knappen Automatisk färg.
Endast giltigt när ColorTemplate har värdet ThemeColors eller StandardColors.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_Color Definierar det markerade färgvärdet som en COLORREF-.
Endast giltigt när UI_PKEY_ColorType har värdet UI_SWATCHCOLORTYPE_RGB.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_ColorType Definierar den valda färgtypen.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_Enabled Definierar möjligheten för en kontroll att svara på användarinteraktion.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_Keytip Kan bara uppdateras genom ogiltighet.
UI_PKEY_Label Definierar teckensträngen för en kontrolletikett.
Kan bara uppdateras genom ogiltighet.
UI_PKEY_LargeHighContrastImage Definierar den stora högkontrastbild som ska visas för en kontroll.
Kan bara uppdateras genom ogiltighet.
Mer information om bildformat finns i Ange resurser för menyfliksområdets bild.
UI_PKEY_LargeImage Definierar den stora bild som ska visas för en kontroll.
Kan bara uppdateras genom ogiltighet.
Mer information om bildformat finns i Ange resurser för menyfliksområdets bild.
UI_PKEY_MoreColorsLabel Definierar etiketten för knappen Fler färger....
Endast giltigt när ColorTemplate har värdet ThemeColors eller StandardColors.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_NoColorLabel Definierar etiketten för knappen Ingen färg.
Giltigt för alla ColorTemplate- värden.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_RecentColorsCategoryLabel Definierar etiketten för kategorin Senaste färger.
Endast giltigt när ColorTemplate har värdet ThemeColors. Det här är den enda mallen som innehåller etiketterade kategorier.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_SmallHighContrastImage Definierar den lilla högkontrastbild som ska visas för en kontroll.
Kan bara uppdateras genom ogiltighet.
Mer information om bildformat finns i Ange resurser för menyfliksområdets bild.
UI_PKEY_SmallImage Definierar den lilla bild som ska visas för en kontroll.
Kan bara uppdateras genom ogiltighet.
Mer information om bildformat finns i Ange resurser för menyfliksområdets bild.
UI_PKEY_StandardColors Definierar en matris med COLORREF- värden för färgrutor för en Drop-Down färgväljare.
Varje Drop-Down färgväljare ColorTemplate innehåller ett StandardColors rutnät.
Obs! Värdena COLORREF från den första StandardColorGridRows x Kolumner i matrisen visas. Om matrisen definierar färre färger än antalet StandardColors färgrutor som deklareras i markering, visas tomma blanksteg för de saknade chipsen.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_StandardColorsCategoryLabel Definierar etiketten för Standard-färger kategori.
Endast giltigt när ColorTemplate har värdet ThemeColors. Det här är den enda mallen som innehåller etiketterade kategorier.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_StandardColorsTooltips Definierar en strängmatris med färgswatch-knappbeskrivningar för det StandardColors rutnätet.
Varje Drop-Down färgväljare ColorTemplate innehåller ett StandardColors rutnät.
Obs! Endast de verktygstips som krävs för att märka färgrutorna som visas i det StandardColors rutnätet används. Om färre etiketter anges än antalet färgrutor i det StandardColors rutnätet anges en standardinställning för de återstående färgrutorna.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColors Definierar en matris med COLORREF- värden för färgrutor för en Drop-Down färgväljare.
Endast giltigt när ColorTemplate har värdet ThemeColors.
Obs! Värdena COLORREF från den första ThemeColorGridRows x Kolumner i matrisen visas. Om matrisen definierar färre färger än antalet ThemeColors färgrutor som deklareras i markering, visas tomma blanksteg för de saknade chipsen.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColorsTooltips Definierar strängmatrisen med färgswatch-knappbeskrivningar för det ThemeColors rutnätet.
Endast giltigt när ColorTemplate har värdet ThemeColors.
Obs! Endast de verktygstips som krävs för att märka färgrutorna som visas i det ThemeColors rutnätet används. Om färre etiketter anges än antalet färgrutor i det ThemeColors rutnätet anges en standardinställning för de återstående färgrutorna.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColorsCategoryLabel Definierar etiketten för Temafärger kategori.
Endast giltigt när ColorTemplate har värdet ThemeColors. Det här är den enda mallen som innehåller etiketterade kategorier.
Stöder IUIFramework::GetUICommandProperty och IUIFramework::SetUICommandProperty.
UI_PKEY_TooltipDescription Definierar teckensträngen för en beskrivning av knappbeskrivningen som är associerad med en UI_PKEY_TooltipTitle.
Kan bara uppdateras genom ogiltighet.
UI_PKEY_TooltipTitle Definierar teckensträngen för en kommandoknappbeskrivning.
Kan bara uppdateras genom ogiltighet.

Kommandohanterare

Metoden IUICommandHandler::UpdateProperty används för att anpassa en Drop-Down färgväljare via egenskapsnycklarna som anges ovan. I följande exempel visas hur du anger färgrutor för en Drop-Down Färgväljare, baserat på en anpassad stilinställning eller ett anpassat färgrutnät som deklareras i markering.

STDMETHODIMP DropDownColorPickerHandler::UpdateProperty(
              UINT nCmdID,
              __in REFPROPERTYKEY key,
              __in_opt const PROPVARIANT* ppropvarCurrentValue,
              __out PROPVARIANT* ppropvarNewValue)
{
  HRESULT hr = E_NOTIMPL;
  if (key == UI_PKEY_ThemeColors)
  {
    COLORREF rThemeColors[TOT_THEME_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rThemeColors); i++)
    {
      // any COLORREF
      rThemeColors[i] = RGB(0, 255, 0); 
    }
    hr = InitPropVariantFromUInt32Vector(
           &rThemeColors, ARRAYSIZE(rThemeColors), ppropvarNewValue);
  }

  else if (key == UI_PKEY_StandardColors)
  {
    ULONG rStandardColors[TOT_STANDARD_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rStandardColors); i++)
    {
      // any COLORREF
      rStandardColors[i] = RGB(255, 0, 0); 
    }
    hr = InitPropVariantFromUInt32Vector(
           &rStandardColors, ARRAYSIZE(rStandardColors),ppropvarNewValue);
  }

  else if (key == UI_PKEY_ThemeColorsTooltips)
  {
    BSTR rThemeTooltips[TOT_THEME_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rThemeTooltips); i++)
    {
      // any constant character string
      rThemeTooltips[i] = L"Green"; 
    }
    hr = InitPropVariantFromStringVector((PCWSTR *)&rThemeTooltips, 50, ppropvarNewValue);
  }
  else if (key == UI_PKEY_StandardColorsTooltips)
  {
    static BSTR rStandardTooltips[TOT_STANDARD_COLORS];
    for (LONG i = 0; i < ARRAYSize(rStandardTooltips); i++)
    {
      // any constant character string
      rStandardTooltips[i] = L"Red"; 
    }
    hr = InitPropVariantFromStringVector(
           (PCWSTR *)&rStandardTooltips, 20, ppropvarNewValue);
  }
  return hr;
}

I följande exempel visas en implementering av IUICommandHandler::Execute-metoden som exponerar färgrutefärgerna för Drop-Down färgväljare för menyfliksprogrammet.

STDMETHODIMP DropDownColorPickerHandler::Execute(
                 UINT nCmdID,
                 UI_EXECUTIONVERB verb,
                 __in_opt const PROPERTYKEY* key,
                 __in_opt const PROPVARIANT* ppropvarValue,
                 __in_opt IUISimplePropertySet* pCommandExecutionProperties)
{
  HRESULT hr = E_NOTIMPL;
  if (*key == UI_PKEY_ColorType)
  {
    UI_SWATCHCOLORTYPE uType = 
      (UI_SWATCHCOLORTYPE)PropVariantToUInt32WithDefault(
        *ppropvarValue, 
        UI_SWATCHCOLORTYPE_NOCOLOR);

    COLORREF color;
    switch(uType)
    {
      case UI_SWATCHCOLORTYPE_RGB:
        PROPVARIANT var;
        pCommandExecutionProperties->GetValue(UI_PKEY_Color, &var);
        color = PropVariantToUInt32WithDefault(var, 0);
        break;
      case UI_SWATCHCOLORTYPE_AUTOMATIC:
        color = COLOR_WINDOWTEXT;
        break;
      case UI_SWATCHCOLORTYPE_NOCOLOR:
        color = MSONoFill;
        break;
    }

    // do with your color what you will...
    gInternalColor = color;
    hr = S_OK;
  }
  return hr;
}

Kontrollbibliotek för Windows Ribbon Framework

DropDownColorPicker-markeringselementet

egenskaper för färgväljare

Anpassa ett menyfliksområde via storleksdefinitioner och skalningsprinciper

DropDownColorPicker Exempel