Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’infrastructure du ruban Windows fournit un contrôle de sélecteur de couleurs spécialisé Drop-Down qui expose divers paramètres de couleur par le biais d’un bouton fractionné et d’un sélecteur de couleurs déroulant personnalisable.
- Introduction
- de balisage
- code
- rubriques connexes
Présentation
En émulant l’apparence et les fonctionnalités du sélecteur de couleurs Microsoft Office, l’infrastructure du ruban est en mesure de bénéficier à la fois et de contribuer à, à la cohérence et à la familiarité dans un large éventail d’applications.
Balisage
Comme tous les contrôles du 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és. Le tableau suivant répertorie les attributs du sélecteur de couleurs Drop-Down.
Attribut | Descriptif |
---|---|
ColorTemplate | Modèles de disposition qui spécifient le type de sélecteur de couleurs Drop-Down. Il existe trois modèles, chacun spécifiant une disposition de contrôle et des valeurs par défaut pour les attributs associés et les clés de propriété.
|
ChipSize | Taille de chaque puce de couleur (ou montre).
|
Colonnes | Nombre de colonnes de puce de couleur (ou dewatch). |
CommandName | Nom de la déclaration de commande associée. |
IsAutomaticColorButtonVisible | Affiche (ou masque) le bouton automatique. Valide uniquement lorsque colorTemplate a une valeur de ThemeColors ou de StandardColors . |
IsNoColorButtonVisible | Affiche (ou masque) le bouton Aucune couleur. Valide pour toutes les valeurs ColorTemplate. |
RecentColorGridRows | Nombre de lignes de puce de couleur (ou de nuanceur) dans la zone Couleurs récentes. Valide uniquement lorsque ColorTemplate a une valeur de ThemeColors . |
StandardColorGridRows | Nombre de lignes de puce de couleur (ou de nuances) dans les couleurs standard zone. |
ThemeColorGridRows | Nombre de lignes de puce de couleur (ou de nuances) dans les couleurs de thème zone. Valide uniquement lorsque ColorTemplate a une valeur de ThemeColors . |
Les captures d’écran suivantes illustrent les dispositions par défaut Drop-Down sélecteur de couleurs pour les trois modèles de couleurs.
ThemeColors :[newline] ![]() |
standardcolors :[newline] ![]() |
highlightcolors :[newline] ![]() |
Le balisage de base requis pour chaque type de sélecteur de couleurs Drop-Down est illustré dans les exemples suivants :
Remarque
Le sélecteur de couleurs Drop-Down est un contrôle button 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 sélecteur de couleurs Drop-Down.
En règle générale, une propriété de sélecteur de couleurs Drop-Down est mise à jour dans l’interface utilisateur du 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 propriétés définies par l'IUICommandHandler ::UpdateProperty méthode de rappel.
La méthode de rappel IUICommandHandler ::UpdateProperty n’est pas exécutée et l’application interrogée pour une valeur de propriété mise à jour, jusqu’à ce que la propriété soit requise par l’infrastructure. Par exemple, lorsqu’un onglet est activé et qu’un contrôle est révélé dans l’interface utilisateur du ruban ou lorsqu’une info-bulle est affichée.
Remarque
Dans certains cas, une propriété peut être récupérée via 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 sélecteur de couleurs Drop-Down.
Clé de propriété | Descriptif | Remarques |
---|---|---|
UI_PKEY_AutomaticColorLabel | Définit l’étiquette du bouton de couleur de automatique. Valide uniquement lorsque ColorTemplate a une valeur de ThemeColors ou de 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 une valeur de 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 possibilité pour un contrôle de répondre à l’interaction utilisateur. |
Prend en charge IUIFramework ::GetUICommandProperty et IUIFramework ::SetUICommandProperty. |
UI_PKEY_Keytip | Ne peut être mis à jour qu’à l’aide d’une invalidation. | |
UI_PKEY_Label | Définit la chaîne de caractères d’une étiquette de contrôle. |
Ne peut être mis à jour qu’à l’aide d’une invalidation. |
UI_PKEY_LargeHighContrastImage | Définit la grande image à contraste élevé à afficher pour un contrôle. |
Ne peut être mis à jour qu’à l’aide d’une invalidation. Pour plus d’informations sur les formats d’image, consultez Spécification des ressources d’image du ruban. |
UI_PKEY_LargeImage | Définit la grande image à afficher pour un contrôle. |
Ne peut être mis à jour qu’à l’aide d’une invalidation. Pour plus d’informations sur les formats d’image, consultez Spécification des ressources d’image du ruban. |
UI_PKEY_MoreColorsLabel | Définit l’étiquette du bouton Autres couleurs... bouton. Valide uniquement lorsque ColorTemplate a une valeur de ThemeColors ou de 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 couleurs récentes catégorie. Valide uniquement lorsque colorTemplate a une valeur de 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. |
Ne peut être mis à jour qu’à l’aide d’une invalidation. Pour plus d’informations sur les formats d’image, consultez Spécification des ressources d’image du ruban. |
UI_PKEY_SmallImage | Définit la petite image à afficher pour un contrôle. |
Ne peut être mis à jour qu’à l’aide d’une invalidation. Pour plus d’informations sur les formats d’image, consultez Spécification des ressources d’image du ruban. |
UI_PKEY_StandardColors | Définit un tableau de valeurs COLORREF pour les nuances d’un sélecteur de couleurs Drop-Down. Chaque Drop-Down sélecteur de couleurs colorTemplate contient une grille StandardColors . Remarque : les valeurs de COLORREF initiales StandardColorGridRows x Columns du tableau sont affichées. Si le tableau définit moins de couleurs que le nombre de StandardColors nuances déclarées dans le balisage, les espaces vides sont affichés pour les puces manquantes. |
Prend en charge IUIFramework ::GetUICommandProperty et IUIFramework ::SetUICommandProperty. |
UI_PKEY_StandardColorsCategoryLabel | Définit l’étiquette des couleurs standard catégorie. Valide uniquement lorsque colorTemplate a une valeur de 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 de nuance de couleur pour la grille StandardColors .Chaque Drop-Down sélecteur de couleurs colorTemplate contient une grille StandardColors . Remarque : seuls ces conseils d’outil requis pour étiqueter les nuances de couleur affichées dans la grille StandardColors sont utilisées. Si moins d’étiquettes sont fournies que le nombre de nuances dans la grille StandardColors , une valeur par défaut est fournie pour les montres restantes. |
Prend en charge IUIFramework ::GetUICommandProperty et IUIFramework ::SetUICommandProperty. |
UI_PKEY_ThemeColors | Définit un tableau de valeurs COLORREF pour les nuances d’un sélecteur de couleurs Drop-Down. Valide uniquement lorsque colorTemplate a une valeur de ThemeColors . Remarque : les valeurs de COLORREF initiales ThemeColorGridRows x Columns du tableau sont affichées. Si le tableau définit moins de couleurs que le nombre de ThemeColors nuances déclarées dans le balisage, les espaces vides sont affichés pour les puces manquantes. |
Prend en charge IUIFramework ::GetUICommandProperty et IUIFramework ::SetUICommandProperty. |
UI_PKEY_ThemeColorsTooltips | Définit le tableau de chaînes d’info-bulles de nuance de couleur pour la grille ThemeColors .Valide uniquement lorsque colorTemplate a une valeur de ThemeColors . Remarque : seuls ces conseils d’outil requis pour étiqueter les nuances de couleur affichées dans la grille ThemeColors sont utilisées. Si moins d’étiquettes sont fournies que le nombre de nuances dans la grille ThemeColors , une valeur par défaut est fournie pour les montres restantes. |
Prend en charge IUIFramework ::GetUICommandProperty et IUIFramework ::SetUICommandProperty. |
UI_PKEY_ThemeColorsCategoryLabel | Définit l’étiquette des couleurs de thème catégorie. Valide uniquement lorsque colorTemplate a une valeur de 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 d’une description d’info-bulle associée à un UI_PKEY_TooltipTitle. |
Ne peut être mis à jour qu’à l’aide d’une invalidation. |
UI_PKEY_TooltipTitle | Définit la chaîne de caractères d’une info-bulle Command. |
Ne peut être mis à jour qu’à l’aide d’une invalidation. |
Gestionnaires de commandes
La méthode IUICommandHandler ::UpdateProperty est utilisée pour personnaliser un sélecteur de couleurs Drop-Down via les clés de propriété répertoriées ci-dessus. L’exemple suivant montre comment définir les nuances de couleur d’un sélecteur de couleurs Drop-Down, 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 du sélecteur de couleurs Drop-Down à l’application 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;
}