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.
|
ChipSize | Storleken på varje färgchip (eller färgruta).
|
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] ![]() |
standardcolors :[newline] ![]() |
highlightcolors :[newline] ![]() |
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="cmdDropDownColorPickerGroup"
SizeDefinition="ThreeButtons">
<DropDownColorPicker
CommandName="cmdDropDownColorPickerThemeColors"
ColorTemplate="ThemeColors"/>
<DropDownColorPicker
CommandName="cmdDropDownColorPickerStandardColors"
ColorTemplate="StandardColors"/>
<DropDownColorPicker
CommandName="cmdDropDownColorPickerHighlightColors"
ColorTemplate="HighlightColors"
StandardColorGridRows="1"/>
</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;
}