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.
  • ThemeColors
  • StandardColors
  • HighlightColors
Copeaux Taille de chaque puce de couleur (ou nuance).
  • Small
  • Medium
  • Large
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: [ ]  capture d’écran de saut de ligne de l’élément dropdowncolorpicker avec l’attribut colortemplate défini sur’ThemeColors'. [ caractère] standardcolors: [ ]  capture d’écran de saut de ligne de l’élément dropdowncolorpicker avec l’attribut colortemplate défini sur’standardcolors'. [ caractère] highlightcolors: [ ]  capture d’écran de saut de ligne de l’élément dropdowncolorpicker avec l’attribut colortemplate défini sur’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=&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>

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]
Les valeurs COLORREF des colonnes StandardColorGridRows x initiales du tableau sont affichées. Si le tableau définit moins de couleurs que le nombre d' StandardColors échantillons déclarés dans le balisage, les espaces vides s’affichent pour les puces manquantes.

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]
Seuls les conseils d’outils requis pour étiqueter les échantillons de couleurs affichés dans la StandardColors grille sont utilisés. Si moins d’étiquettes sont fournies que le nombre d’échantillons dans la StandardColors grille, une valeur par défaut est fournie pour les échantillons remainining.

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]
Les valeurs COLORREF des colonnes ThemeColorGridRows x initiales du tableau sont affichées. Si le tableau définit moins de couleurs que le nombre d' ThemeColors échantillons déclarés dans le balisage, les espaces vides s’affichent pour les puces manquantes.

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]
Seuls les conseils d’outils requis pour étiqueter les échantillons de couleurs affichés dans la ThemeColors grille sont utilisés. Si moins d’étiquettes sont fournies que le nombre d’échantillons dans la ThemeColors grille, une valeur par défaut est fournie pour les échantillons remainining.

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;
}

Windows Bibliothèque de contrôles de Framework du ruban

Élément de balisage DropDownColorPicker

Propriétés du sélecteur de couleurs

Personnalisation d’un ruban à l’aide de définitions de taille et de stratégies de mise à l’échelle

Exemple DropDownColorPicker