Classe CMFCColorMenuButton

A classe CMFCColorMenuButton dá suporte a um comando de menu ou um botão de barra de ferramentas que inicia uma caixa de diálogo seletor de cor.

Sintaxe

class CMFCColorMenuButton : public CMFCToolBarMenuButton

Membros

Construtores públicos

Nome Descrição
CMFCColorMenuButton::CMFCColorMenuButton Constrói um objeto CMFCColorMenuButton.

Métodos públicos

Nome Descrição
CMFCColorMenuButton::EnableAutomaticButton Habilita e desabilita um botão "automático" posicionado acima dos botões de cor regulares. (O botão automático do sistema padrão é rotulado como Automático).
CMFCColorMenuButton::EnableDocumentColors Habilita a exibição de cores específicas do documento em vez de cores do sistema.
CMFCColorMenuButton::EnableOtherButton Habilita e desabilita um botão "outro" posicionado abaixo dos botões de cor regulares. (O "outro" botão padrão do sistema é rotulado como Mais Cores).
CMFCColorMenuButton::EnableTearOff Habilita a capacidade de extrair um painel de cores.
CMFCColorMenuButton::GetAutomaticColor Recupera a cor automática atual.
CMFCColorMenuButton::GetColor Recupera a cor atual do botão.
CMFCColorMenuButton::GetColorByCmdID Recupera a cor que corresponde a uma ID de comando especificada.
CMFCColorMenuButton::OnChangeParentWnd Chamado pela estrutura quando a janela pai é alterada.
CMFCColorMenuButton::OpenColorDialog Abre uma caixa de diálogo seleção de cores.
CMFCColorMenuButton::SetColor Define a cor do botão de cor atual.
CMFCColorMenuButton::SetColorByCmdID Define a cor do botão de menu de cores especificado.
CMFCColorMenuButton::SetColorName Define um novo nome para a cor especificada.
CMFCColorMenuButton::SetColumnsNumber Define o número de colunas exibidas por um objeto CMFCColorBar.

Métodos protegidos

Nome Descrição
CMFCColorMenuButton::CopyFrom Copia outro botão de barra de ferramentas para o botão atual.
CMFCColorMenuButton::CreatePopupMenu Cria uma caixa de diálogo seletor de cor.
CMFCColorMenuButton::IsEmptyMenuAllowed Indica se há suporte para menus vazios.
CMFCColorMenuButton::OnDraw Chamado pela estrutura para exibir uma imagem em um botão.
CMFCColorMenuButton::OnDrawOnCustomizeList Chamado pela estrutura antes de um objeto CMFCColorMenuButton ser exibido na lista de uma caixa de diálogo de personalização da barra de ferramentas.

Comentários

Para substituir o comando de menu original ou o botão de barra de ferramentas por um objeto CMFCColorMenuButton, crie o objeto CMFCColorMenuButton, defina todos os estilos adequados da Classe CMFCColorBar e chame o método ReplaceButton da Classe CMFCToolBar. Se você personalizar uma barra de ferramentas, chame o método CMFCToolBarsCustomizeDialog::ReplaceButton.

A caixa de diálogo seletor de cor é criada durante o processamento do manipulador de eventos CMFCColorMenuButton::CreatePopupMenu. O manipulador de eventos notifica o quadro pai com uma mensagem de WM_COMMAND. O objeto CMFCColorMenuButton envia a ID de controle atribuída ao comando de menu original ou ao botão de barra de ferramentas.

Exemplo

O exemplo a seguir demonstra como criar e configurar um botão de menu de cores usando vários métodos na classe CMFCColorMenuButton. No exemplo, um objeto CPalette é criado primeiro e depois usado para construir um objeto da classe CMFCColorMenuButton. O objeto CMFCColorMenuButton então é configurado habilitando seus botões automáticos e outros e definindo sua cor e o número de colunas. Esse código faz parte do exemplo do 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;
}

Hierarquia de herança

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

Requisitos

Cabeçalho: afxcolormenubutton.h

CMFCColorMenuButton::CMFCColorMenuButton

Constrói um objeto CMFCColorMenuButton.

CMFCColorMenuButton();

CMFCColorMenuButton(
    UINT uiCmdID,
    LPCTSTR lpszText,
    CPalette* pPalette=NULL);

Parâmetros

uiCmdID
[in] Uma ID de comando de botão.

lpszTexto
[in] O texto do botão.

pPalette
[in] Um ponteiro para a paleta de cores do botão.

Valor de retorno

Comentários

O primeiro construtor é o construtor padrão. A cor atual e a cor automática do objeto são inicializadas para preto (RGB(0, 0, 0)).

O segundo construtor inicializa o botão para a cor que corresponde à ID de comando especificada.

CMFCColorMenuButton::CopyFrom

Copia um objeto derivado da Classe CMFCToolBarMenuButton para outro.

virtual void CopyFrom(const CMFCToolBarButton& src);

Parâmetros

src
[in] Botão de origem a ser copiado.

Comentários

Substitua esse método para copiar objetos derivados do objeto CMFCColorMenuButton.

CMFCColorMenuButton::CreatePopupMenu

Cria uma caixa de diálogo seletor de cor.

virtual CMFCPopupMenu* CreatePopupMenu();

Valor de retorno

Um objeto que representa uma caixa de diálogo seletor de cor.

Comentários

Esse método é chamado pela estrutura quando o usuário pressiona um botão de menu de cores.

CMFCColorMenuButton::EnableAutomaticButton

Habilita e desabilita um botão "automático" posicionado acima dos botões de cor regulares. (O botão automático do sistema padrão é rotulado como Automático).

void EnableAutomaticButton(
    LPCTSTR lpszLabel,
    COLORREF colorAutomatic,
    BOOL bEnable=TRUE);

Parâmetros

lpszLabel
[in] Especifica o texto do botão exibido quando o botão se torna automático.

colorAutomatic
[in] Especifica uma nova cor automática.

bEnable
[in] Especifica se o botão é automático ou não.

Comentários

O botão automático aplica a cor padrão atual.

CMFCColorMenuButton::EnableDocumentColors

Habilita a exibição de cores específicas do documento em vez de cores do sistema.

void EnableDocumentColors(
    LPCTSTR lpszLabel,
    BOOL bEnable=TRUE);

Parâmetros

lpszLabel
[in] Especifica o texto do botão.

bEnable
[in] TRUE para exibir cores específicas do documento ou FALSE para exibir cores do sistema.

Comentários

Use esse método para exibir as cores do documento atuais ou as cores da paleta do sistema quando o usuário clicar em um botão de menu de cores.

CMFCColorMenuButton::EnableOtherButton

Habilita e desabilita um botão "outro" posicionado abaixo dos botões de cor regulares. (O "outro" botão padrão do sistema é rotulado como Mais Cores).

void EnableOtherButton(
    LPCTSTR lpszLabel,
    BOOL bAltColorDlg=TRUE,
    BOOL bEnable=TRUE);

Parâmetros

lpszLabel
[in] Especifica o texto do botão.

bAltColorDlg
[in] Especifique TRUE para exibir a caixa de diálogo CMFCColorDialog ou FALSE para exibir a caixa de diálogo de cor do sistema padrão.

bEnable
[in] Especifique TRUE para exibir o botão "outro"; caso contrário, FALSE. O valor padrão é TRUE.

Comentários

CMFCColorMenuButton::EnableTearOff

Habilita a capacidade de extrair um painel de cores.

void EnableTearOff(
    UINT uiID,
    int nVertDockColumns=-1,
    int nHorzDockRows=-1);

Parâmetros

uiID
[in] Especifica a ID do painel de retirada.

nVertDockColumns
[in] Especifica o número de colunas no painel de cores encaixado verticalmente enquanto estiver no estado de desativação.

nHorzDockRows
[in] Especifica o número de linhas para o painel de cores encaixado horizontalmente enquanto estiver no estado de desativação.

Comentários

Chame esse método para habilitar o recurso "extrair" para o painel de cores que aparece quando o botão CMFCColorMenuButton é pressionado.

CMFCColorMenuButton::GetAutomaticColor

Recupera a cor automática atual.

COLORREF GetAutomaticColor() const;

Valor de retorno

Um valor de cor RGB que representa a cor automática atual.

Comentários

Chame esse método para obter a cor automática definida por CMFCColorMenuButton::EnableAutomaticButton.

CMFCColorMenuButton::GetColor

Recupera a cor atual do botão.

COLORREF GetColor() const;

Valor de retorno

A cor do botão.

Comentários

CMFCColorMenuButton::GetColorByCmdID

Recupera a cor que corresponde a uma ID de comando especificada.

static COLORREF GetColorByCmdID(UINT uiCmdID);

Parâmetros

uiCmdID
[in] Uma ID de comando.

Valor de retorno

A cor que corresponde à ID de comando especificada.

Comentários

Use esse método quando você tiver vários botões de cor em um aplicativo. Quando o usuário clica em um botão de cores, o botão envia sua ID de comando em uma mensagem de WM_COMMAND para seu pai. O método GetColorByCmdID usa a ID de comando para recuperar a cor correspondente.

CMFCColorMenuButton::IsEmptyMenuAllowed

Indica se há suporte para menus vazios.

virtual BOOL IsEmptyMenuAllowed() const;

Valor de retorno

Não zero se os menus vazios forem permitidos; caso contrário, zero.

Comentários

Os menus vazios têm suporte por padrão. Substitua esse método para alterar esse comportamento na classe derivada.

CMFCColorMenuButton::OnChangeParentWnd

Chamado pela estrutura quando a janela pai é alterada.

virtual void OnChangeParentWnd(CWnd* pWndParent);

Parâmetros

pWndParent
[in] Um ponteiro para a nova janela pai.

Comentários

CMFCColorMenuButton::OnDraw

Chamado pela estrutura para exibir uma imagem em um botão.

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

Parâmetros

pDC
[in] Um ponteiro para um contexto de dispositivo.

rect
[in] Um retângulo que limita a área a ser redesenhada.

pImages
[in] Aponta para uma lista de imagens da barra de ferramentas.

bHorz
[in] TRUE para especificar que a barra de ferramentas está em um estado horizontal encaixado; caso contrário, FALSE. O valor padrão é TRUE.

bCustomizeMode
[in] TRUE para especificar que o aplicativo está no modo de personalização; caso contrário, FALSE. O padrão é FALSE.

bHighlight
[in] TRUE para especificar que o botão está realçado; caso contrário, FALSE. O padrão é FALSE.

bDrawBorder
[in] TRUE para especificar que a borda do botão é exibida; caso contrário, FALSE. O valor padrão é TRUE.

bGrayDisabledButtons
[in] TRUE para especificar que os botões desabilitados estão esmaecidos (acinzentados) ; caso contrário, FALSE. O valor padrão é TRUE.

Comentários

CMFCColorMenuButton::OnDrawOnCustomizeList

Chamado pela estrutura antes de um objeto CMFCColorMenuButton ser exibido na lista de uma caixa de diálogo de personalização da barra de ferramentas.

virtual int OnDrawOnCustomizeList(
    CDC* pDC,
    const CRect& rect,
    BOOL bSelected);

Parâmetros

pDC
[in] Um ponteiro para um contexto de dispositivo.

rect
[in] Um retângulo que limita o botão a ser desenhado.

bSelected
[in] TRUE especifica que o botão está no estado selecionado; caso contrário, FALSE.

Valor de retorno

A largura do botão.

Comentários

Esse método é chamado pela estrutura quando um objeto CMFCColorMenuButton é exibido na caixa de listagem durante o processo de personalização da barra de ferramentas.

CMFCColorMenuButton::OpenColorDialog

Abre uma caixa de diálogo seleção de cores.

virtual BOOL OpenColorDialog(
    const COLORREF colorDefault,
    COLORREF& colorRes);

Parâmetros

colorDefault
[in] A cor padrão selecionada na caixa de diálogo de cor.

colorRes
[out] Retorna a cor selecionada pelo usuário na caixa de diálogo de cores.

Valor de retorno

Não zero se o usuário selecionar uma nova cor; caso contrário, zero.

Comentários

Quando o botão de menu for clicado, chame esse método para abrir uma caixa de diálogo de cores. Se o valor retornado não for zero, a cor selecionada pelo usuário será armazenada no parâmetro colorRes. Use o método CMFCColorMenuButton::EnableOtherButton para alternar entre a caixa de diálogo de cor padrão e a caixa de diálogo Classe CMFCColorDialog.

CMFCColorMenuButton::SetColor

Define a cor do botão de cor atual.

virtual void SetColor(
    COLORREF clr,
    BOOL bNotify=TRUE);

Parâmetros

clr
[in] Um valor de cor RGB.

bNotify
[in] TRUE para aplicar a cor do parâmetro clr a qualquer botão de menu ou botão de barra de ferramentas associado; caso contrário, FALSE.

Comentários

Chame esse método para alterar a cor do botão de cor atual. Se o parâmetro bNotify não for zero, a cor do botão correspondente em qualquer menu pop-up ou barra de ferramentas associada será alterada para a cor especificada pelo parâmetro clr.

CMFCColorMenuButton::SetColorByCmdID

Define a cor do botão de menu de cores especificado.

static void SetColorByCmdID(
    UINT uiCmdID,
    COLORREF color);

Parâmetros

uiCmdID
[in] A ID do recurso de um botão de menu de cores.

color
[in] Um valor de cor RGB.

CMFCColorMenuButton::SetColorName

Define um novo nome para a cor especificada.

static void SetColorName(
    COLORREF color,
    const CString& strName);

Parâmetros

color
[in] O valor RGB da cor cujo nome é alterado.

strName
[in] O novo nome da cor.

Comentários

CMFCColorMenuButton::SetColumnsNumber

Define o número de colunas a serem exibidas em um controle de seleção de cores (objeto CMFCColorBar).

void SetColumnsNumber(int nColumns);

Parâmetros

nColunas
[in] O número de colunas a serem exibidas.

Comentários

Confira também

Gráfico da hierarquia
Classes
Classe CMFCColorBar
Classe CMFCToolBar
Classe CMFCToolBarsCustomizeDialog
Classe CMFCColorButton