selektor kolorów Drop-Down
Struktura wstążki systemu Windows udostępnia wyspecjalizowaną kontrolkę selektora kolorów Drop-Down, która uwidacznia różne ustawienia kolorów za pomocą przycisku podziału i selektora kolorów listy rozwijanej.
- Wprowadzenie
- znaczników
-
kodu
- właściwości
- programy obsługi poleceń
- Tematy pokrewne
Wprowadzenie
Emulując wygląd i funkcjonalność selektora kolorów pakietu Microsoft Office, platforma wstążki może korzystać zarówno z zalet, jak i przyczynić się do spójności i znajomości w wielu aplikacjach.
Adiustacja
Podobnie jak wszystkie kontrolki wstążki, selektor kolorów Drop-Down jest łatwo implementowany i dostosowywany za pomocą znaczników. Platforma udostępnia wiele atrybutów elementów dla selektora kolorów Drop-Down uwidaczniać różne poziomy funkcjonalności. W poniższej tabeli wymieniono atrybuty selektora kolorów Drop-Down.
Atrybut | Opis |
---|---|
ColorTemplate | Szablony układów określające typ selektora kolorów Drop-Down. Istnieją trzy szablony, z których każdy określa układ kontrolki i wartości domyślne skojarzonych atrybutów i kluczy właściwości.
|
ChipSize | Rozmiar każdego mikroukładu (lub próbki).
|
Kolumny | Liczba kolumn mikroukładu kolorów (lub próbki). |
CommandName | Nazwa skojarzonej deklaracji polecenia. |
IsAutomaticColorButtonVisible | Wyświetla (lub ukrywa) przycisk Automatyczny. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors lub StandardColors . |
IsNoColorButtonVisible | Wyświetla (lub ukrywa) przycisk Brak koloru. Prawidłowe dla wszystkich wartości ColorTemplate. |
RecentColorGridRows | Liczba wierszy mikroukładu kolorów (lub próbki) w obszarze Ostatnie kolory. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors . |
StandardColorGridRows | Liczba wierszy mikroukładu (lub próbki) w kolorach Standard obszarze. |
ThemeColorGridRows | Liczba wierszy mikroukładu kolorów (lub próbki) w kolorach motywu obszarze. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors . |
Poniższe zrzuty ekranu ilustrują domyślne układy selektora kolorów Drop-Down dla trzech szablonów kolorów.
ThemeColors :[newline] ![]() |
standardcolors :[newline] ![]() |
highlightcolors :[newline] ![]() |
Podstawowe znaczniki wymagane dla każdego typu selektora kolorów Drop-Down przedstawiono w następujących przykładach:
Nuta
Selektor kolorów Drop-Down to prawidłowa kontrolka przycisku w szablonie SizeDefinition.
<!-- 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
Jako wyspecjalizowana kontrolka, która obsługuje dostosowywanie, każda implementacja selektora kolorów Drop-Down, która korzysta z tych możliwości, wymaga wyspecjalizowanego kodu aplikacji do zarządzania właściwościami i obsługi wszystkich poleceń wystawionych przez kontrolkę.
Właściwości
Struktura wstążki definiuje kolekcję kluczy właściwości dla kontrolki selektora kolorów Drop-Down.
Zazwyczaj właściwość selektora kolorów Drop-Down jest aktualizowana w interfejsie użytkownika wstążki przez unieważnienie polecenia skojarzonego z kontrolką za pomocą wywołania metody IUIFramework::InvalidateUICommand. Zdarzenie unieważniania jest obsługiwane, a zdefiniowane właściwości są aktualizowane przez metodę wywołania zwrotnego IUICommandHandler::UpdateProperty wywołania zwrotnego.
Metoda wywołania zwrotnego IUICommandHandler::UpdateProperty nie jest wykonywana, a aplikacja odpytuje zaktualizowaną wartość właściwości, dopóki właściwość nie będzie wymagana przez strukturę. Na przykład po aktywowaniu karty i ujawnieniu kontrolki w interfejsie użytkownika wstążki lub po wyświetleniu etykietki narzędzia.
Nuta
W niektórych przypadkach właściwość można pobrać za pomocą metody IUIFramework::GetUICommandProperty i ustawić za pomocą metody IUIFramework::SetUICommandProperty.
W poniższej tabeli wymieniono klucze właściwości skojarzone z kontrolką selektora kolorów Drop-Down.
Klucz właściwości | Opis | Notatki |
---|---|---|
UI_PKEY_AutomaticColorLabel | Definiuje etykietę przycisku koloru automatycznego. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors lub StandardColors . |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_Color | Definiuje wybraną wartość koloru jako COLORREF. Prawidłowe tylko wtedy, gdy UI_PKEY_ColorType ma wartość UI_SWATCHCOLORTYPE_RGB . |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_ColorType | Definiuje wybrany typ koloru. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_Enabled | Definiuje możliwość reagowania na interakcję użytkownika z kontrolką. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_Keytip | Można aktualizować tylko za pomocą unieważnienia. | |
UI_PKEY_Label | Definiuje ciąg znaków dla etykiety kontrolki. |
Można aktualizować tylko za pomocą unieważnienia. |
UI_PKEY_LargeHighContrastImage | Definiuje duży obraz o dużym kontraście do wyświetlenia dla kontrolki. |
Można aktualizować tylko za pomocą unieważnienia. Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki. |
UI_PKEY_LargeImage | Definiuje duży obraz do wyświetlenia dla kontrolki. |
Można aktualizować tylko za pomocą unieważnienia. Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki. |
UI_PKEY_MoreColorsLabel | Definiuje etykietę dla przycisku Więcej kolorów.... Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors lub StandardColors . |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_NoColorLabel | Definiuje etykietę przycisku Brak koloru. Prawidłowe dla wszystkich wartości ColorTemplate. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_RecentColorsCategoryLabel | Definiuje etykietę dla kategorii Ostatnie kolory. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors . Jest to jedyny szablon zawierający kategorie oznaczone etykietami. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_SmallHighContrastImage | Definiuje mały obraz o dużym kontraście do wyświetlenia dla kontrolki. |
Można aktualizować tylko za pomocą unieważnienia. Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki. |
UI_PKEY_SmallImage | Definiuje mały obraz do wyświetlenia dla kontrolki. |
Można aktualizować tylko za pomocą unieważnienia. Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki. |
UI_PKEY_StandardColors | Definiuje tablicę wartości COLORREF dla próbek selektora kolorów Drop-Down. Każdy selektor kolorów Drop-Down ColorTemplate zawiera siatkę StandardColors . Uwaga: wartości COLORREF z początkowej StandardColorGridRows x kolumn tablic y są wyświetlane. Jeśli tablica definiuje mniej kolorów niż liczba StandardColors próbki zadeklarowane w znacznikach, puste spacje są wyświetlane dla brakujących chipów. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_StandardColorsCategoryLabel | Definiuje etykietę dla kolorów Standardowa kategorii. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors . Jest to jedyny szablon zawierający kategorie oznaczone etykietami. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_StandardColorsTooltips | Definiuje tablicę ciągów etykietek narzędzi do próbkowania kolorów dla siatki StandardColors .Każdy selektor kolorów Drop-Down ColorTemplate zawiera siatkę StandardColors . Uwaga: Używane są tylko te wskazówki dotyczące narzędzi wymagane do oznaczania etykietami kolorów próbek wyświetlanych w siatce StandardColors . W przypadku podania mniejszej liczby etykiet niż liczba próbek w siatce StandardColors zostanie podana wartość domyślna dla pozostałych próbek. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColors | Definiuje tablicę wartości COLORREF dla próbek selektora kolorów Drop-Down. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors . Uwaga: wartości COLORREF z początkowej ThemeColorGridRows x Kolumny tablicy są wyświetlane. Jeśli tablica definiuje mniej kolorów niż liczba ThemeColors próbki zadeklarowane w znacznikach, puste spacje są wyświetlane dla brakujących chipów. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColorsTooltips | Definiuje tablicę ciągów etykietek narzędzi do próbkowania kolorów dla siatki ThemeColors .Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors . Uwaga: Używane są tylko te wskazówki dotyczące narzędzi wymagane do oznaczania etykietami kolorów próbek wyświetlanych w siatce ThemeColors . W przypadku podania mniejszej liczby etykiet niż liczba próbek w siatce ThemeColors zostanie podana wartość domyślna dla pozostałych próbek. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColorsCategoryLabel | Definiuje etykietę kolorów motywu kategorii. Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors . Jest to jedyny szablon zawierający kategorie oznaczone etykietami. |
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty. |
UI_PKEY_TooltipDescription | Definiuje ciąg znaków opis etykietki narzędzia skojarzony z UI_PKEY_TooltipTitle. |
Można aktualizować tylko za pomocą unieważnienia. |
UI_PKEY_TooltipTitle | Definiuje ciąg znaków dla etykietki narzędzia Polecenia. |
Można aktualizować tylko za pomocą unieważnienia. |
Programy obsługi poleceń
Metoda IUICommandHandler::UpdateProperty służy do dostosowywania selektora kolorów Drop-Down za pomocą kluczy właściwości wymienionych powyżej. W poniższym przykładzie pokazano, jak ustawić próbki kolorów selektora kolorów Drop-Down na podstawie niestandardowych preferencji stylu lub niestandardowej siatki próbkowania zadeklarowanej w znacznikach.
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;
}
W poniższym przykładzie pokazano implementację metody IUICommandHandler::Execute, która uwidacznia kolory selektora kolorów Drop-Down aplikacji wstążki.
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;
}