Selezione colori Drop-Down
Il framework della barra multifunzione di Windows fornisce 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 e contribuire a, coerenza e familiarità in un'ampia gamma di applicazioni.
Markup
Analogamente a tutti i controlli della barra multifunzione, il Drop-Down Selezione colori viene facilmente implementato e personalizzato tramite markup. Il framework fornisce diversi 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 Drop-Down Selezione colori. 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 chip di colore (o campione). |
CommandName | Nome della dichiarazione command associata. |
IsAutomaticColorButtonVisible | Visualizza (o nasconde) il pulsante automatico. Valido solo quando ColorTemplate ha un valore ThemeColors o StandardColors . |
IsNoColorButtonVisible | Visualizza (o nasconde) il pulsante Nessun colore. Valido per tutti i valori ColorTemplate. |
RecentColorGridRows | Numero di righe di chip colore (o campione) nell'area Colori recenti. Valido solo quando ColorTemplate ha un valore pari a ThemeColors . |
StandardColorGridRows | Numero di righe di chip di colore (o campione) nell'area colori standard. |
ThemeColorGridRows | Numero di righe di chip colore (o campione) nell'area Colori tema. Valido solo quando ColorTemplate ha un valore pari a ThemeColors . |
Le schermate seguenti illustrano i layout predefiniti Drop-Down Selezione colori per i tre modelli di colore.
ThemeColors :[newline] ![]() |
standardcolors :[newline] ![]() |
highlightcolors :[newline] ![]() |
Il markup di base necessario per ogni Drop-Down tipo di selezione colori è illustrato negli esempi seguenti:
Nota
La selezione colori Drop-Down è un controllo Pulsante di valido in un modelloSizeDefinition.
<!-- 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 dell'applicazione specializzato per gestire le proprietà e gestire i comandi emessi 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::UpdateProper ty.
L'IUICommandHandler::UpdateProperty metodo di callback non viene eseguito e l'applicazione ha eseguito 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 di colore automatico. Valido solo quando ColorTemplate ha un valore 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 possibilità per un controllo di rispondere all'interazione dell'utente. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_Keytip | Può essere aggiornato solo tramite invalidazione. | |
UI_PKEY_Label | Definisce la stringa di caratteri per un'etichetta di controllo. |
Può essere aggiornato solo tramite invalidazione. |
UI_PKEY_LargeHighContrastImage | Definisce l'immagine a contrasto elevato di grandi dimensioni 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_LargeImage | Definisce l'immagine di grandi dimensioni 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_MoreColorsLabel | Definisce l'etichetta per il pulsante Altri colori.... Valido solo quando ColorTemplate ha un valore 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 pari a ThemeColors . Si tratta dell'unico modello che contiene categorie etichettate. |
Supporta IUIFramework::GetUICommandProperty e IUIFramework::SetUICommandProperty. |
UI_PKEY_SmallHighContrastImage | Definisce l'immagine a contrasto elevato di piccole dimensioni 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 l'immagine piccola 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 Selezione colori ColorTemplate contiene una griglia StandardColors . Nota: vengono visualizzati i valori di COLORREFStandardColorGridRows x Columns della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di campioni StandardColors 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 dei campioni di colore per la griglia StandardColors .Ogni Drop-Down Selezione colori ColorTemplate contiene una griglia StandardColors . Nota: vengono usati solo i suggerimenti degli strumenti necessari per etichettare i campioni di colore visualizzati nella griglia StandardColors . Se viene fornito un numero inferiore di etichette rispetto al numero di campioni nella griglia StandardColors , 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 COLORREFThemeColorGridRows x Colonne della matrice. Se la matrice definisce un numero inferiore di colori rispetto al numero di campioni ThemeColors 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 dei campioni di colore per la griglia ThemeColors .Valido solo quando ColorTemplate ha un valore pari a ThemeColors . Nota: vengono usati solo i suggerimenti degli strumenti necessari per etichettare i campioni di colore visualizzati nella griglia ThemeColors . Se viene fornito un numero inferiore di etichette rispetto al numero di campioni nella griglia ThemeColors , 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 del 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. |
Può essere aggiornato solo tramite invalidazione. |
Gestori dei comandi
Il metodo IUICommandHandler::UpdateProperty viene usato per personalizzare un 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 campioni 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 di 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;
}