Classe CMFCColorMenuButton
La CMFCColorMenuButton
classe supporta un comando di menu o un pulsante della barra degli strumenti che avvia una finestra di dialogo selezione colori.
Sintassi
class CMFCColorMenuButton : public CMFCToolBarMenuButton
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CMFCColorMenuButton::CMFCColorMenuButton | Costruisce un oggetto CMFCColorMenuButton . |
Metodi pubblici
Nome | Descrizione |
---|---|
CMFCColorMenuButton::EnableAutomaticButton | Abilita e disabilita un pulsante "automatico" posizionato sopra i pulsanti di colore normali. (Il pulsante automatico del sistema standard è etichettato Automatico. |
CMFCColorMenuButton::EnableDocumentColors | Abilita la visualizzazione dei colori specifici del documento anziché dei colori di sistema. |
CMFCColorMenuButton::EnableOtherButton | Abilita e disabilita un pulsante "altro" posizionato sotto i pulsanti di colore normali. (il pulsante "other" del sistema standard è etichettato Altri colori. |
CMFCColorMenuButton::EnableTearOff | Consente di rimuovere un riquadro colori. |
CMFCColorMenuButton::GetAutomaticColor | Recupera il colore automatico corrente. |
CMFCColorMenuButton::GetColor | Recupera il colore del pulsante corrente. |
CMFCColorMenuButton::GetColorByCmdID | Recupera il colore corrispondente a un ID di comando specificato. |
CMFCColorMenuButton::OnChangeParentWnd | Chiamato dal framework quando cambia la finestra padre. |
CMFCColorMenuButton::OpenColorDialog | Apre una finestra di dialogo di selezione dei colori. |
CMFCColorMenuButton::SetColor | Imposta il colore del pulsante di colore corrente. |
CMFCColorMenuButton::SetColorByCmdID | Imposta il colore del pulsante di menu colore specificato. |
CMFCColorMenuButton::SetColorName | Imposta un nuovo nome per il colore specificato. |
CMFCColorMenuButton::SetColumnsNumber | Imposta il numero di colonne visualizzate da un CMFCColorBar oggetto . |
Metodi protetti
Nome | Descrizione |
---|---|
CMFCColorMenuButton::CopyFrom | Copia un altro pulsante della barra degli strumenti nel pulsante corrente. |
CMFCColorMenuButton::CreatePopupMenu | Crea una finestra di dialogo selezione colori. |
CMFCColorMenuButton::IsEmptyMenuAllowed | Indica se i menu vuoti sono supportati. |
CMFCColorMenuButton::OnDraw | Chiamato dal framework per visualizzare un'immagine su un pulsante. |
CMFCColorMenuButton::OnDrawOnCustomizeList | Chiamato dal framework prima che un CMFCColorMenuButton oggetto venga visualizzato nell'elenco di una finestra di dialogo di personalizzazione della barra degli strumenti. |
Osservazioni:
Per sostituire il comando di menu o il pulsante della barra degli strumenti originale con un CMFCColorMenuButton
oggetto , creare l'oggetto CMFCColorMenuButton
, impostare gli stili della classe CMFCColorBar appropriati e quindi chiamare il ReplaceButton
metodo della classe CMFCToolBar Class. Se si personalizza una barra degli strumenti, chiamare il metodo CMFCToolBarsCustomizeDialog::ReplaceButton .
La finestra di dialogo selezione colori viene creata durante l'elaborazione del gestore eventi CMFCColorMenuButton::CreatePopupMenu . Il gestore eventi notifica al frame padre un messaggio di WM_COMMAND. L'oggetto CMFCColorMenuButton
invia l'ID del controllo assegnato al comando di menu originale o al pulsante della barra degli strumenti.
Esempio
Nell'esempio seguente viene illustrato come creare e configurare un pulsante di menu a colori usando vari metodi nella CMFCColorMenuButton
classe . Nell'esempio viene prima creato un CPalette
oggetto e quindi usato per costruire un oggetto della CMFCColorMenuButton
classe . L'oggetto CMFCColorMenuButton
viene quindi configurato abilitando i relativi pulsanti automatici e altri pulsanti e impostandone il colore e il numero di colonne. Questo codice fa parte dell'esempio di Word Pad.
CPalette m_palColorPicker; // Palette for color picker
int m_nNumColours;
CMFCColorMenuButton *CFormatBar::CreateColorButton()
{
if (m_palColorPicker.GetSafeHandle() == NULL)
{
m_nNumColours = sizeof(crColours) / sizeof(ColourTableEntry);
ASSERT(m_nNumColours <= MAX_COLOURS);
if (m_nNumColours > MAX_COLOURS)
m_nNumColours = MAX_COLOURS;
// Create the palette
struct
{
LOGPALETTE LogPalette;
PALETTEENTRY PalEntry[MAX_COLOURS];
} pal;
LOGPALETTE *pLogPalette = (LOGPALETTE*)&pal;
pLogPalette->palVersion = 0x300;
pLogPalette->palNumEntries = (WORD)m_nNumColours;
for (int i = 0; i < m_nNumColours; i++)
{
pLogPalette->palPalEntry[i].peRed = GetRValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peGreen = GetGValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peBlue = GetBValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peFlags = 0;
}
m_palColorPicker.CreatePalette(pLogPalette);
}
CMFCColorMenuButton *pColorButton = new CMFCColorMenuButton(ID_CHAR_COLOR, _T("Text Color..."), &m_palColorPicker);
pColorButton->EnableAutomaticButton(_T("Automatic"), RGB(0, 0, 0));
pColorButton->EnableOtherButton(_T("More Colors..."));
pColorButton->EnableDocumentColors(_T("Document's Colors"));
pColorButton->EnableTearOff(ID_COLOR_TEAROFF, 5, 2);
pColorButton->SetColumnsNumber(8);
pColorButton->SetColor(RGB(0, 0, 255));
// Initialize color names:
for (int i = 0; i < m_nNumColours; i++)
{
CMFCColorMenuButton::SetColorName(crColours[i].crColour, crColours[i].szName);
}
return pColorButton;
}
Gerarchia di ereditarietà
Requisiti
Intestazione: afxcolormenubutton.h
CMFCColorMenuButton::CMFCColorMenuButton
Costruisce un oggetto CMFCColorMenuButton
.
CMFCColorMenuButton();
CMFCColorMenuButton(
UINT uiCmdID,
LPCTSTR lpszText,
CPalette* pPalette=NULL);
Parametri
uiCmdID
[in] ID comando pulsante.
lpszText
[in] Testo del pulsante.
pPalette
[in] Puntatore alla tavolozza dei colori del pulsante.
Valore restituito
Osservazioni:
Il primo costruttore è il costruttore predefinito. Il colore corrente e il colore automatico dell'oggetto vengono inizializzati in nero (RGB(0, 0, 0)).
Il secondo costruttore inizializza il pulsante sul colore corrispondente all'ID comando specificato.
CMFCColorMenuButton::CopyFrom
Copia un oggetto derivato dalla classe CMFCToolBarMenuButton in un altro oggetto.
virtual void CopyFrom(const CMFCToolBarButton& src);
Parametri
src
[in] Pulsante Di origine da copiare.
Osservazioni:
Eseguire l'override di questo metodo per copiare gli oggetti derivati dall'oggetto CMFCColorMenuButton
.
CMFCColorMenuButton::CreatePopupMenu
Crea una finestra di dialogo selezione colori.
virtual CMFCPopupMenu* CreatePopupMenu();
Valore restituito
Oggetto che rappresenta una finestra di dialogo selezione colori.
Osservazioni:
Questo metodo viene chiamato dal framework quando l'utente preme un pulsante di menu a colori.
CMFCColorMenuButton::EnableAutomaticButton
Abilita e disabilita un pulsante "automatico" posizionato sopra i pulsanti di colore normali. (Il pulsante automatico del sistema standard è etichettato Automatico.
void EnableAutomaticButton(
LPCTSTR lpszLabel,
COLORREF colorAutomatic,
BOOL bEnable=TRUE);
Parametri
lpszLabel
[in] Specifica il testo del pulsante visualizzato quando il pulsante diventa automatico.
colorAutomatic
[in] Specifica un nuovo colore automatico.
bEnable
[in] Specifica se il pulsante è automatico o meno.
Osservazioni:
Il pulsante automatico applica il colore predefinito corrente.
CMFCColorMenuButton::EnableDocumentColors
Abilita la visualizzazione dei colori specifici del documento anziché dei colori di sistema.
void EnableDocumentColors(
LPCTSTR lpszLabel,
BOOL bEnable=TRUE);
Parametri
lpszLabel
[in] Specifica il testo del pulsante.
bEnable
[in] TRUE per visualizzare colori specifici del documento o FALSE per visualizzare i colori di sistema.
Osservazioni:
Utilizzare questo metodo per visualizzare i colori correnti del documento o i colori della tavolozza di sistema quando l'utente fa clic su un pulsante di menu colore.
CMFCColorMenuButton::EnableOtherButton
Abilita e disabilita un pulsante "altro" posizionato sotto i pulsanti di colore normali. (il pulsante "other" del sistema standard è etichettato Altri colori.
void EnableOtherButton(
LPCTSTR lpszLabel,
BOOL bAltColorDlg=TRUE,
BOOL bEnable=TRUE);
Parametri
lpszLabel
[in] Specifica il testo del pulsante.
bAltColorDlg
[in] Specificare TRUE per visualizzare la CMFCColorDialog
finestra di dialogo o FALSE per visualizzare la finestra di dialogo colore di sistema standard.
bEnable
[in] Specificare TRUE per visualizzare il pulsante "altro" ; in caso contrario, FALSE. Il valore predefinito è TRUE.
Osservazioni:
CMFCColorMenuButton::EnableTearOff
Consente di rimuovere un riquadro colori.
void EnableTearOff(
UINT uiID,
int nVertDockColumns=-1,
int nHorzDockRows=-1);
Parametri
uiID
[in] Specifica l'ID per il riquadro di disinstallazione.
nVertDockColumns
[in] Specifica il numero di colonne nel riquadro colori ancorato verticalmente durante lo stato di disinstallazione.
nHorzDockRows
[in] Specifica il numero di righe per il riquadro colori ancorato orizzontalmente durante lo stato di disinstallazione.
Osservazioni:
Chiamare questo metodo per abilitare la funzionalità "strappo" per il riquadro dei colori che viene visualizzato quando viene premuto il CMFCColorMenuButton
pulsante.
CMFCColorMenuButton::GetAutomaticColor
Recupera il colore automatico corrente.
COLORREF GetAutomaticColor() const;
Valore restituito
Valore di colore RGB che rappresenta il colore automatico corrente.
Osservazioni:
Chiamare questo metodo per ottenere il colore automatico impostato da CMFCColorMenuButton::EnableAutomaticButton.
CMFCColorMenuButton::GetColor
Recupera il colore del pulsante corrente.
COLORREF GetColor() const;
Valore restituito
Colore del pulsante.
Osservazioni:
CMFCColorMenuButton::GetColorByCmdID
Recupera il colore corrispondente a un ID di comando specificato.
static COLORREF GetColorByCmdID(UINT uiCmdID);
Parametri
uiCmdID
[in] ID comando.
Valore restituito
Colore che corrisponde all'ID del comando specificato.
Osservazioni:
Usare questo metodo quando sono presenti diversi pulsanti di colore in un'applicazione. Quando l'utente fa clic su un pulsante di colore, il pulsante invia il relativo ID comando in un messaggio di WM_COMMAND al relativo elemento padre. Il GetColorByCmdID
metodo usa l'ID comando per recuperare il colore corrispondente.
CMFCColorMenuButton::IsEmptyMenuAllowed
Indica se i menu vuoti sono supportati.
virtual BOOL IsEmptyMenuAllowed() const;
Valore restituito
Diverso da zero se sono consentiti menu vuoti; in caso contrario, zero.
Osservazioni:
I menu vuoti sono supportati per impostazione predefinita. Eseguire l'override di questo metodo per modificare questo comportamento nella classe derivata.
CMFCColorMenuButton::OnChangeParentWnd
Chiamato dal framework quando cambia la finestra padre.
virtual void OnChangeParentWnd(CWnd* pWndParent);
Parametri
pWndParent
[in] Puntatore alla nuova finestra padre.
Osservazioni:
CMFCColorMenuButton::OnDraw
Chiamato dal framework per visualizzare un'immagine su un pulsante.
virtual void OnDraw(
CDC* pDC,
const CRect& rect,
CMFCToolBarImages* pImages,
BOOL bHorz=TRUE,
BOOL bCustomizeMode=FALSE,
BOOL bHighlight=FALSE,
BOOL bDrawBorder=TRUE,
BOOL bGrayDisabledButtons=TRUE);
Parametri
pDC
[in] Puntatore a un contesto di dispositivo.
rect
[in] Rettangolo che delimita l'area da ridisegnare.
pImages
[in] Punta a un elenco di immagini della barra degli strumenti.
bHorz
[in] TRUE per specificare che la barra degli strumenti si trova in uno stato ancorato orizzontale; in caso contrario, FALSE. Il valore predefinito è TRUE.
bCustomizeMode
[in] TRUE per specificare che l'applicazione è in modalità di personalizzazione; in caso contrario, FALSE. Il valore predefinito è FALSE.
bHighlight
[in] TRUE per specificare che il pulsante è evidenziato; in caso contrario, FALSE. Il valore predefinito è FALSE.
bDrawBorder
[in] TRUE per specificare che viene visualizzato il bordo del pulsante; in caso contrario, FALSE. Il valore predefinito è TRUE.
bGrayDisabledButtons
[in] TRUE per specificare che i pulsanti disabilitati sono disattivati (in grigio) fuori; in caso contrario, FALSE. Il valore predefinito è TRUE.
Osservazioni:
CMFCColorMenuButton::OnDrawOnCustomizeList
Chiamato dal framework prima che un CMFCColorMenuButton
oggetto venga visualizzato nell'elenco di una finestra di dialogo di personalizzazione della barra degli strumenti.
virtual int OnDrawOnCustomizeList(
CDC* pDC,
const CRect& rect,
BOOL bSelected);
Parametri
pDC
[in] Puntatore a un contesto di dispositivo.
rect
[in] Rettangolo che delimita il pulsante da disegnare.
bSelected
[in] TRUE specifica che il pulsante è nello stato selezionato; in caso contrario, FALSE.
Valore restituito
Larghezza del pulsante.
Osservazioni:
Questo metodo viene chiamato dal framework quando un CMFCColorMenuButton
oggetto viene visualizzato nella casella di riepilogo durante il processo di personalizzazione della barra degli strumenti.
CMFCColorMenuButton::OpenColorDialog
Apre una finestra di dialogo di selezione dei colori.
virtual BOOL OpenColorDialog(
const COLORREF colorDefault,
COLORREF& colorRes);
Parametri
colorDefault
[in] Colore predefinito selezionato nella finestra di dialogo colore.
colorRes
[out] Restituisce il colore selezionato dall'utente nella finestra di dialogo colore.
Valore restituito
Diverso da zero se l'utente seleziona un nuovo colore; in caso contrario, zero.
Osservazioni:
Quando si fa clic sul pulsante del menu, chiamare questo metodo per aprire una finestra di dialogo colore. Se il valore restituito è diverso da zero, il colore selezionato dall'utente viene archiviato nel parametro colorRes . Utilizzare il metodo CMFCColorMenuButton::EnableOtherButton per passare dalla finestra di dialogo colore standard alla finestra di dialogo Classe CMFCColorDialog.
CMFCColorMenuButton::SetColor
Imposta il colore del pulsante di colore corrente.
virtual void SetColor(
COLORREF clr,
BOOL bNotify=TRUE);
Parametri
clr
[in] Valore di colore RGB.
bNotify
[in] TRUE per applicare il colore del parametro clr a qualsiasi pulsante di menu o pulsante della barra degli strumenti associato; in caso contrario, FALSE.
Osservazioni:
Chiamare questo metodo per modificare il colore del pulsante colore corrente. Se il parametro bNotify è diverso da zero, il colore del pulsante corrispondente in qualsiasi menu popup o barra degli strumenti associato viene modificato nel colore specificato dal parametro clr .
CMFCColorMenuButton::SetColorByCmdID
Imposta il colore del pulsante di menu colore specificato.
static void SetColorByCmdID(
UINT uiCmdID,
COLORREF color);
Parametri
uiCmdID
[in] ID risorsa di un pulsante di menu a colori.
color
[in] Valore di colore RGB.
CMFCColorMenuButton::SetColorName
Imposta un nuovo nome per il colore specificato.
static void SetColorName(
COLORREF color,
const CString& strName);
Parametri
color
[in] Valore RGB del colore il cui nome cambia.
strName
[in] Nuovo nome del colore.
Osservazioni:
CMFCColorMenuButton::SetColumnsNumber
Imposta il numero di colonne da visualizzare in un controllo di selezione colori ( oggetto CMFCColorBar ).
void SetColumnsNumber(int nColumns);
Parametri
nColumns
[in] Numero di colonne da visualizzare.
Osservazioni:
Vedi anche
Grafico della gerarchia
Classi
Classe CMFCColorBar
Classe CMFCToolBar
Classe CMFCToolBarsCustomizeDialog
Classe CMFCColorButton