Sélecteur de couleurs Drop-Down
l’infrastructure du ruban Windows fournit un contrôle de sélecteur de couleurs Drop-Down spécialisé qui expose un large éventail de paramètres de couleur via un bouton partagé et un sélecteur de couleur déroulant personnalisable.
Introduction
en émulant l’apparence et la fonctionnalité du sélecteur de couleurs Microsoft Office, l’infrastructure du ruban peut à la fois tirer parti de et contribuer à la cohérence et à la familiarité dans un large éventail d’applications.
balisage
Comme tous les contrôles de ruban, le sélecteur de couleurs Drop-Down est facilement implémenté et personnalisé par le biais du balisage. L’infrastructure fournit un certain nombre d’attributs d’élément pour le sélecteur de couleurs Drop-Down pour exposer différents niveaux de fonctionnalité. Le tableau suivant répertorie les attributs du sélecteur de couleurs Drop-Down.
| Attribut | Description |
|---|---|
| ColorTemplate | Modèles de disposition qui spécifient le type de Drop-Down sélecteur de couleurs. Il existe trois modèles, chacun spécifiant une disposition de contrôle et des valeurs par défaut pour les attributs et les clés de propriété associés.
|
| Copeaux | Taille de chaque puce de couleur (ou nuance).
|
| Colonnes | Nombre de colonnes de la puce de couleur (ou de l’échantillon). |
| CommandName | Nom de la déclaration de commande associée. |
| IsAutomaticColorButtonVisible | Affiche (ou masque) le bouton automatique . Valide uniquement lorsque ColorTemplate a la valeur ThemeColors ou StandardColors . |
| IsNoColorButtonVisible | Affiche (ou masque) le bouton aucune couleur . Valide pour toutes les valeurs ColorTemplate . |
| RecentColorGridRows | Nombre de lignes de la puce de couleur (ou de l’échantillon) dans la zone couleurs récentes . Valide uniquement lorsque ColorTemplate a la valeur ThemeColors . |
| StandardColorGridRows | Nombre de lignes de puce de couleur (ou d’échantillon) dans la zone de couleurs standard . |
| ThemeColorGridRows | Nombre de lignes de puce de couleur (ou d’échantillon) dans la zone de couleurs de thème . Valide uniquement lorsque ColorTemplate a la valeur ThemeColors . |
Les captures d’écran suivantes illustrent les dispositions par défaut du sélecteur de couleurs Drop-Down pour les trois modèles de couleurs.
ThemeColors: [ ] [ caractère] |
standardcolors: [ ] [ caractère] |
highlightcolors: [ ] ![]() |
Le balisage de base requis pour chaque type de sélecteur de couleurs Drop-Down est illustré dans les exemples suivants :
Notes
Le sélecteur de couleurs Drop-Down est un contrôle bouton valide dans un modèle 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>
Code
En tant que contrôle spécialisé qui prend en charge la personnalisation, toute implémentation du sélecteur de couleurs Drop-Down qui tire parti de ces fonctionnalités nécessite un code d’application spécialisé pour gérer les propriétés et gérer les commandes émises par le contrôle.
Propriétés
L’infrastructure du ruban définit une collection de clés de propriété pour le contrôle de sélecteur de couleurs Drop-Down.
En règle générale, une Drop-Down propriété du sélecteur de couleurs est mise à jour dans l’interface ruban en invalidant la commande associée au contrôle via un appel à la méthode IUIFramework :: InvalidateUICommand . L’événement d’invalidation est géré, et les mises à jour de la propriété sont définies par la méthode de rappel IUICommandHandler :: UpdateProperty .
La méthode de rappel IUICommandHandler :: UpdateProperty n’est pas exécutée et l’application a interrogé une valeur de propriété mise à jour, jusqu’à ce que la propriété soit requise par le Framework. Par exemple, lorsqu’un onglet est activé et qu’un contrôle est affiché dans l’interface ruban, ou lorsqu’une info-bulle est affichée.
Notes
Dans certains cas, une propriété peut être récupérée par le biais de la méthode IUIFramework :: GetUICommandProperty et définie avec la méthode IUIFramework :: SetUICommandProperty .
Le tableau suivant répertorie les clés de propriété associées au contrôle de sélecteur de couleurs Drop-Down.
| Clé de propriété | Description | Notes |
|---|---|---|
| UI_PKEY_AutomaticColorLabel | Définit l’étiquette du bouton de couleur automatique . Valide uniquement lorsque ColorTemplate a la valeur ThemeColors ou StandardColors . |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_Color | Définit la valeur de couleur sélectionnée en tant que COLORREF. Valide uniquement lorsque UI_PKEY_ColorType a la valeur UI_SWATCHCOLORTYPE_RGB . |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_ColorType | Définit le type de couleur sélectionné. |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_Enabled | Définit la capacité d’un contrôle à répondre à l’interaction de l’utilisateur. |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_Keytip | Peut uniquement être mis à jour par le biais d’une invalidation. | |
| UI_PKEY_Label | Définit la chaîne de caractères pour une étiquette de contrôle. |
Peut uniquement être mis à jour par le biais d’une invalidation. |
| UI_PKEY_LargeHighContrastImage | Définit la grande image à contraste élevé à afficher pour un contrôle. |
Peut uniquement être mis à jour par le biais d’une invalidation. Pour plus d’informations sur les formats d’image, consultez spécification des ressources d’image de ruban. |
| UI_PKEY_LargeImage | Définit la grande image à afficher pour un contrôle. |
Peut uniquement être mis à jour par le biais d’une invalidation. Pour plus d’informations sur les formats d’image, consultez spécification des ressources d’image de ruban. |
| UI_PKEY_MoreColorsLabel | Définit l’étiquette du bouton plus de couleurs .... Valide uniquement lorsque ColorTemplate a la valeur ThemeColors ou StandardColors . |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_NoColorLabel | Définit l’étiquette du bouton aucune couleur . Valide pour toutes les valeurs ColorTemplate . |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_RecentColorsCategoryLabel | Définit l’étiquette de la catégorie des couleurs récentes . Valide uniquement lorsque ColorTemplate a la valeur ThemeColors . Il s’agit du seul modèle qui contient des catégories étiquetées. |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_SmallHighContrastImage | Définit la petite image à contraste élevé à afficher pour un contrôle. |
Peut uniquement être mis à jour par le biais d’une invalidation. Pour plus d’informations sur les formats d’image, consultez spécification des ressources d’image de ruban. |
| UI_PKEY_SmallImage | Définit la petite image à afficher pour un contrôle. |
Peut uniquement être mis à jour par le biais d’une invalidation. Pour plus d’informations sur les formats d’image, consultez spécification des ressources d’image de ruban. |
| UI_PKEY_StandardColors | Définit un tableau de valeurs COLORREF pour les nuanciers d’un sélecteur de couleurs Drop-Down. Chaque Drop-Down sélecteur de couleurs ColorTemplate contient une StandardColors grille. [!Note] |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_StandardColorsCategoryLabel | Définit l’étiquette de la catégorie de couleurs standard . Valide uniquement lorsque ColorTemplate a la valeur ThemeColors . Il s’agit du seul modèle qui contient des catégories étiquetées. |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_StandardColorsTooltips | Définit un tableau de chaînes d’info-bulles d’échantillons de couleurs pour la StandardColors grille.Chaque Drop-Down sélecteur de couleurs ColorTemplate contient une StandardColors grille. [!Note] |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_ThemeColors | Définit un tableau de valeurs COLORREF pour les nuanciers d’un sélecteur de couleurs Drop-Down. Valide uniquement lorsque ColorTemplate a la valeur ThemeColors . [!Note] |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_ThemeColorsTooltips | Définit le tableau de chaînes des info-bulles des échantillons de couleurs pour la ThemeColors grille.Valide uniquement lorsque ColorTemplate a la valeur ThemeColors . [!Note] |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_ThemeColorsCategoryLabel | Définit l’étiquette de la catégorie de couleurs de thème . Valide uniquement lorsque ColorTemplate a la valeur ThemeColors . Il s’agit du seul modèle qui contient des catégories étiquetées. |
Prend en charge IUIFramework :: GetUICommandProperty et IUIFramework :: SetUICommandProperty. |
| UI_PKEY_TooltipDescription | Définit la chaîne de caractères pour une description d’info-bulle associée à un UI_PKEY_TooltipTitle. |
Peut uniquement être mis à jour par le biais d’une invalidation. |
| UI_PKEY_TooltipTitle | Définit la chaîne de caractères pour une info-bulle de commande. |
Peut uniquement être mis à jour par le biais d’une invalidation. |
Gestionnaires de commandes
La méthode IUICommandHandler :: UpdateProperty est utilisée pour personnaliser un Drop-Down sélecteur de couleurs via les clés de propriété listées ci-dessus. L’exemple suivant montre comment définir les échantillons de couleur d’un Drop-Down sélecteur de couleurs, en fonction d’une préférence de style personnalisée ou d’une grille de nuances personnalisée déclarée dans le balisage.
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;
}
L’exemple suivant illustre une implémentation de la méthode IUICommandHandler :: Execute qui expose les couleurs de l’échantillon du sélecteur de couleurs Drop-Down à l’application du ruban.
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;
}
[ caractère]
[ caractère]