Condividi tramite


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à

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

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