selezione colori Drop-Down
Il framework della barra multifunzione di Windows offre un controllo selezione colori specializzato Drop-Down che espone un'ampia gamma di impostazioni dei colori tramite un pulsante di divisione e un selettore di colori personalizzabile.
Introduzione
Simulando l'aspetto e la funzionalità della selezione colori di Microsoft Office, il framework della barra multifunzione è in grado di trarre vantaggio da e contribuire a, coerenza e familiarità in un'ampia gamma di applicazioni.
markup
Come tutti i controlli della barra multifunzione, la selezione colori Drop-Down è facilmente implementata e personalizzata tramite markup. Il framework fornisce un numero di attributi di elemento per il Drop-Down Selezione colori per esporre vari livelli di funzionalità. Nella tabella seguente sono elencati gli attributi Drop-Down Selezione colori.
Attributo | Descrizione |
---|---|
ColorTemplate | Modelli di layout che specificano il tipo di selezione colori Drop-Down. Sono disponibili tre modelli, ognuno dei quali specifica un layout di controllo e i valori predefiniti per gli attributi e le chiavi delle proprietà associati.
|
ChipSize | Dimensioni di ogni chip di colore (o campione).
|
Colonne | Numero di colonne del chip di colore (o di controllo). |
CommandName | Nome della dichiarazione di comando associata. |
IsAutomaticColorButtonVisible | Visualizza (o nasconde) il pulsante Automatico . Valido solo quando ColorTemplate ha un valore di ThemeColors o StandardColors . |
IsNoColorButtonVisible | Visualizza (o nasconde) il pulsante Nessun colore . Valido per tutti i valori ColorTemplate . |
RecentColorGridRows | Numero di righe di chip di colore (o di controllo) nell'area Colori recenti . Valido solo quando ColorTemplate ha un valore di ThemeColors . |
StandardColorGridRows | Numero di righe di chip di colore (o di controllo) nell'area colori Standard . |
ThemeColorGridRows | Numero di righe di chip di colore (o di controllo) nell'area Colori tema . Valido solo quando ColorTemplate ha un valore di ThemeColors . |
Le schermate seguenti illustrano i layout predefiniti Drop-Down selezione colori per i tre modelli di colore.
ThemeColors Schermata :[newline] [newline] |
standardcolors :[newline] [newline] |
highlightcolors Schermata :[newline] |
Il markup di base necessario per ogni tipo di selezione colori di Drop-Down è illustrato negli esempi seguenti:
Nota
Il Drop-Down Selezione colori è un controllo Button valido in un modello 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>
Codice
Come controllo specializzato che supporta la personalizzazione, qualsiasi implementazione del Drop-Down Selezione colori che sfrutta queste funzionalità richiede codice applicazione specializzato per gestire le proprietà e gestire i comandi rilasciati dal controllo.
Proprietà
Il framework della barra multifunzione definisce una raccolta di chiavi di proprietà per il controllo Selezione colori Drop-Down.
In genere, una proprietà selezione colori Drop-Down viene aggiornata nell'interfaccia utente della barra multifunzione invalidando il comando associato al controllo tramite una chiamata al metodo IUIFramework::InvalidateUICommand . L'evento di invalidazione viene gestito e gli aggiornamenti delle proprietà definiti dal metodo di callback IUICommandHandler::UpdateProperty .
Il metodo di callback IUICommandHandler::UpdateProperty non viene eseguito e l'applicazione esegue una query per un valore di proprietà aggiornato, fino a quando la proprietà non è richiesta dal framework. Ad esempio, quando viene attivata una scheda e un controllo visualizzato nell'interfaccia utente della barra multifunzione o quando viene visualizzata una descrizione comando.
Nota
In alcuni casi, una proprietà può essere recuperata tramite il metodo IUIFramework::GetUICommandProperty e impostato con il metodo IUIFramework::SetUICommandProperty.
Nella tabella seguente sono elencate le chiavi delle proprietà associate al controllo Selezione colori Drop-Down.
Chiave della proprietà | Descrizione | Note |
---|---|---|
UI_PKEY_AutomaticColorLabel | Definisce l'etichetta per il pulsante Colore automatico . Valido solo quando ColorTemplate ha un valore di ThemeColors o StandardColors . |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_Color | Definisce il valore di colore selezionato come COLORREF. Valido solo quando UI_PKEY_ColorType ha un valore di UI_SWATCHCOLORTYPE_RGB . |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_ColorType | Definisce il tipo di colore selezionato. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_Enabled | Definisce la capacità di un controllo di rispondere all'interazione utente. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_Keytip | Può essere aggiornato solo tramite l'invalidazione. | |
UI_PKEY_Label | Definisce la stringa di caratteri per un'etichetta di controllo. |
Può essere aggiornato solo tramite l'invalidazione. |
UI_PKEY_LargeHighContrastImage | Definisce l'immagine a contrasto elevato di grandi dimensioni da visualizzare per un controllo. |
Può essere aggiornato solo tramite l'invalidazione. Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione. |
UI_PKEY_LargeImage | Definisce l'immagine di grandi dimensioni da visualizzare per un controllo. |
Può essere aggiornato solo tramite l'invalidazione. Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione. |
UI_PKEY_MoreColorsLabel | Definisce l'etichetta per il pulsante Altri colori... Valido solo quando ColorTemplate ha un valore di ThemeColors o StandardColors . |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_NoColorLabel | Definisce l'etichetta per il pulsante Nessun colore . Valido per tutti i valori ColorTemplate . |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_RecentColorsCategoryLabel | Definisce l'etichetta per la categoria Colori recenti . Valido solo quando ColorTemplate ha un valore di ThemeColors . Si tratta dell'unico modello che contiene categorie etichettate. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_SmallHighContrastImage | Definisce la piccola immagine a contrasto elevato da visualizzare per un controllo. |
Può essere aggiornato solo tramite invalidazione. Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione. |
UI_PKEY_SmallImage | Definisce la piccola immagine da visualizzare per un controllo. |
Può essere aggiornato solo tramite invalidazione. Per altre informazioni sui formati di immagine, vedere Specifica delle risorse dell'immagine della barra multifunzione. |
UI_PKEY_StandardColors | Definisce una matrice di valori COLORREF per i campioni di un Drop-Down Selezione colori. Ogni Drop-Down Color Picker ColorTemplate contiene una StandardColors griglia. Nota: Vengono visualizzati i valori COLORREF dell'oggetto StandardColorGridRows x Columns della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di StandardColors campioni dichiarati nel markup, vengono visualizzati spazi vuoti per i chip mancanti. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_StandardColorsCategoryLabel | Definisce l'etichetta per la categoria Colori standard . Valido solo quando ColorTemplate ha un valore pari a ThemeColors . Si tratta dell'unico modello che contiene categorie etichettate. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_StandardColorsTooltips | Definisce una matrice di stringhe di descrizioni comando del campione di colore per la StandardColors griglia.Ogni Drop-Down Color Picker ColorTemplate contiene una StandardColors griglia. Nota: Vengono usati solo i suggerimenti per gli strumenti necessari per etichettare i campioni di colore visualizzati nella StandardColors griglia. Se vengono fornite meno etichette rispetto al numero di campioni nella StandardColors griglia, viene fornito un valore predefinito per i campioni che rimangono. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColors | Definisce una matrice di valori COLORREF per i campioni di un Drop-Down Selezione colori. Valido solo quando ColorTemplate ha un valore pari a ThemeColors . Nota: Vengono visualizzati i valori COLORREF dell'oggetto ThemeColorGridRows x Columns della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di ThemeColors campioni dichiarati nel markup, vengono visualizzati spazi vuoti per i chip mancanti. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColorsTooltips | Definisce la matrice di stringhe delle descrizioni comando del campione di colore per la ThemeColors griglia.Valido solo quando ColorTemplate ha un valore pari a ThemeColors . Nota: Vengono usati solo i suggerimenti per gli strumenti necessari per etichettare i campioni di colore visualizzati nella ThemeColors griglia. Se vengono fornite meno etichette rispetto al numero di campioni nella ThemeColors griglia, viene fornito un valore predefinito per i campioni che rimangono. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_ThemeColorsCategoryLabel | Definisce l'etichetta per la categoria Colori tema . Valido solo quando ColorTemplate ha un valore pari a ThemeColors . Si tratta dell'unico modello che contiene categorie etichettate. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_TooltipDescription | Definisce la stringa di caratteri per una descrizione della descrizione comando associata a un UI_PKEY_TooltipTitle. |
Può essere aggiornato solo tramite invalidazione. |
UI_PKEY_TooltipTitle | Definisce la stringa di caratteri per una descrizione comando comando. |
Può essere aggiornato solo tramite invalidazione. |
Gestori di comandi
Il metodo IUICommandHandler::UpdateProperty viene usato per personalizzare una Drop-Down Selezione colori tramite le chiavi delle proprietà elencate in precedenza. Nell'esempio seguente viene illustrato come impostare i campioni di colore di un Drop-Down Selezione colori, in base a una preferenza di stile personalizzata o a una griglia di controllo personalizzata dichiarata nel markup.
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;
}
Nell'esempio seguente viene illustrata un'implementazione del metodo IUICommandHandler::Execute che espone i colori del controllo selezione colori Drop-Down all'applicazione Ribbon.
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;
}