Partilhar via


Classe CMFCColorMenuButton

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

A CMFCColorMenuButton classe suporta um comando de menu ou um botão de barra de ferramentas que inicia uma caixa de diálogo seletor de cores.

Sintaxe

class CMFCColorMenuButton : public CMFCToolBarMenuButton

Membros

Construtores Públicos

Nome Description
CMFCColorMenuButton::CMFCColorMenuButton Constrói um CMFCColorMenuButton objeto.

Métodos Públicos

Nome Description
CMFCColorMenuButton::EnableAutomaticButton Ativa e desativa um botão "automático" que está posicionado acima dos botões de cor normais. (O botão automático padrão do sistema é rotulado como Automático.)
CMFCColorMenuButton::EnableDocumentColors Permite a visualização de cores específicas do documento em vez das cores do sistema.
CMFCColorMenuButton::EnableOtherButton Ativa e desativa um botão "outro" que está posicionado abaixo dos botões de cor regular. (O botão padrão "outro" do sistema é rotulado como Mais Cores.)
CMFCColorMenuButton::EnableTearOff Permite a capacidade de arrancar um painel de cor.
CMFCColorMenuButton::GetAutomaticColor Recupera a cor automática atual.
CMFCColorMenuButton::GetColor Recupera a cor do botão atual.
CMFCColorMenuButton::GetColorByCmdID Recupera a cor correspondente a um ID de comando especificado.
CMFCColorMenuButton::OnChangeParentWnd Chamada pelo framework quando a janela pai muda.
CMFCColorMenuButton::OpenColorDialog Abre uma caixa de diálogo de 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 que são apresentadas por um CMFCColorBar objeto.

Métodos Protegidos

Nome Description
CMFCColorMenuButton::CopyFrom Copia outro botão da barra de ferramentas para o botão atual.
CMFCColorMenuButton::CriarMenuPopupT Cria uma caixa de diálogo para selecionar cores.
CMFCColorMenuButton::IsEmptyMenuAllowed Indica se são suportados menus vazios.
CMFCColorMenuButton::OnDraw Chamado pela framework para mostrar uma imagem num botão.
CMFCColorMenuButton::OnDrawOnCustomizeList Chamado pela framework antes de um CMFCColorMenuButton objeto ser exibido na lista de uma caixa de diálogo de personalização da barra de ferramentas.

Observações

Para substituir o comando original do menu ou botão da barra de ferramentas por um CMFCColorMenuButton objeto, crie o CMFCColorMenuButton objeto, defina quaisquer estilos de classe CMFCColorBar apropriados e depois chame o ReplaceButton método da classe CMFCToolBar . Se personalizar uma barra de ferramentas, chame o método CMFCToolBarsCustomizeDialog::ReplaceButton .

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

Example

O exemplo seguinte demonstra como criar e configurar um botão de menu de cores usando vários métodos na CMFCColorMenuButton aula. No exemplo, um CPalette objeto é primeiro criado e depois usado para construir um objeto da CMFCColorMenuButton classe. O CMFCColorMenuButton objeto é então configurado ativando os seus botões automáticos e outros, definindo a cor e o número de colunas. Este 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

Requerimentos

Cabeçalho: afxcolormenubutton.h

CMFCColorMenuButton::CMFCColorMenuButton

Constrói um CMFCColorMenuButton objeto.

CMFCColorMenuButton();

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

Parâmetros

uiCmdID
[dentro] Um ID de comando de botão.

lpszText
[dentro] O texto do botão.

pPalette
[dentro] Um apontador para a paleta de cores do botão.

Valor de retorno

Observações

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

O segundo construtor inicializa o botão na cor correspondente ao ID de comando especificado.

CMFCColorMenuButton::CopyFrom

Copia um objeto derivado da classe CMFCToolBarMenuButton para outro.

virtual void CopyFrom(const CMFCToolBarButton& src);

Parâmetros

src
[dentro] Botão de origem para copiar.

Observações

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

CMFCColorMenuButton::CriarMenuPopupT

Cria uma caixa de diálogo para selecionar cores.

virtual CMFCPopupMenu* CreatePopupMenu();

Valor de retorno

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

Observações

Este método é chamado pelo framework quando o utilizador pressiona um botão de menu de cores.

CMFCColorMenuButton::EnableAutomaticButton

Ativa e desativa um botão "automático" que está posicionado acima dos botões de cor normais. (O botão automático padrão do sistema é rotulado como Automático.)

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

Parâmetros

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

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

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

Observações

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

CMFCColorMenuButton::EnableDocumentColors

Permite a visualização de cores específicas do documento em vez das cores do sistema.

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

Parâmetros

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

bEnable
[dentro] TRUE para mostrar cores específicas do documento ou FALSE para cores do sistema de visualização.

Observações

Use este método para mostrar as cores atuais do documento ou as cores da paleta do sistema quando o utilizador clicar num botão de menu de cores.

CMFCColorMenuButton::EnableOtherButton

Ativa e desativa um botão "outro" que está posicionado abaixo dos botões de cor regular. (O botão padrão "outro" do sistema é rotulado como Mais Cores.)

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

Parâmetros

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

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

bEnable
[dentro] Especifique TRUE para mostrar o botão "outro"; caso contrário, FALSO. O padrão é TRUE.

Observações

CMFCColorMenuButton::EnableTearOff

Permite a capacidade de arrancar um painel de cor.

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

Parâmetros

uiID
[dentro] Especifica o ID para o painel de remoção.

nVertDockColumns
[dentro] Especifica o número de colunas no painel de cor verticalmente encaixado enquanto está em estado de remoção.

nHorzDockRows
[dentro] Especifica o número de filas para o painel de cor acoplado horizontalmente enquanto está em estado de remoção.

Observações

Chame este método para ativar a funcionalidade de "arrancar" do painel de cores que aparece quando o CMFCColorMenuButton botão é 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.

Observações

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

CMFCColorMenuButton::GetColor

Recupera a cor do botão atual.

COLORREF GetColor() const;

Valor de retorno

A cor do botão.

Observações

CMFCColorMenuButton::GetColorByCmdID

Recupera a cor correspondente a um ID de comando especificado.

static COLORREF GetColorByCmdID(UINT uiCmdID);

Parâmetros

uiCmdID
[dentro] Um ID de comando.

Valor de retorno

A cor que corresponde ao ID do comando especificado.

Observações

Use este método quando tiver vários botões de cor numa aplicação. Quando o utilizador clica num botão de cor, este envia o seu ID de comando numa mensagem WM_COMMAND para o pai. O GetColorByCmdID método utiliza o ID do comando para recuperar a cor correspondente.

CMFCColorMenuButton::IsEmptyMenuAllowed

Indica se são suportados menus vazios.

virtual BOOL IsEmptyMenuAllowed() const;

Valor de retorno

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

Observações

Menus vazios são suportados por defeito. Substitua este método para alterar este comportamento na classe derivada.

CMFCColorMenuButton::OnChangeParentWnd

Chamada pelo framework quando a janela pai muda.

virtual void OnChangeParentWnd(CWnd* pWndParent);

Parâmetros

pWndParent
[dentro] Um apontador para a nova janela parental.

Observações

CMFCColorMenuButton::OnDraw

Chamado pela framework para mostrar uma imagem num 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
[dentro] Um apontador para o contexto de um dispositivo.

retângulo
[dentro] Um retângulo que delimita a área a ser redesenhada.

pImagens
[dentro] Aponta para uma lista de imagens da barra de ferramentas.

bHorz
[dentro] TRUE para especificar que a barra de ferramentas está num estado horizontal acoplado; caso contrário, FALSO. O padrão é TRUE.

bCustomizeMode
[dentro] TRUE para especificar que a aplicação está em modo de personalização; caso contrário, FALSO. O padrão é FALSO.

bDestaques
[dentro] TRUE para especificar que o botão está destacado; caso contrário, FALSO. O padrão é FALSO.

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

bGrayDisabledButtons
[dentro] TRUE para especificar que os botões desativados estão cinzentos (escurecidos); caso contrário, FALSO. O padrão é TRUE.

Observações

CMFCColorMenuButton::OnDrawOnCustomizeList

Chamado pela framework antes de um CMFCColorMenuButton objeto 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
[dentro] Um apontador para o contexto de um dispositivo.

retângulo
[dentro] Um retângulo que delimita o botão a desenhar.

bSelecionado
[dentro] TRUE especifica que o botão está no estado selecionado; caso contrário, FALSO.

Valor de retorno

A largura do botão.

Observações

Este método é chamado pela framework quando um CMFCColorMenuButton objeto é exibido na caixa de lista durante o processo de personalização da barra de ferramentas.

CMFCColorMenuButton::OpenColorDialog

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

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

Parâmetros

colorDefault
[dentro] A cor padrão que é selecionada na caixa de diálogo de cores.

colorRes
[fora] Devolve a cor que o utilizador seleciona na caixa de diálogo de cores.

Valor de retorno

Diferente de zero se o utilizador escolher uma nova cor; Caso contrário, zero.

Observações

Quando o botão do menu for clicado, chame este método para abrir uma caixa de diálogo a cores. Se o valor de retorno for diferente de zero, a cor selecionada pelo utilizador é armazenada no parâmetro colorRes . Use o método CMFCColorMenuButton::EnableOtherButton para alternar entre a caixa de diálogo a cores padrão e a caixa de diálogo CMFCColorDialog Class .

CMFCColorMenuButton::SetColor

Define a cor do botão de cor atual.

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

Parâmetros

clr
[dentro] Um valor de cor RGB.

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

Observações

Chame este método para alterar a cor do botão de cor atual. Se o parâmetro bNotify for diferente de zero, a cor do botão correspondente em qualquer menu popup ou barra de ferramentas associada é 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
[dentro] O ID de recurso de um botão de menu a cores.

cor
[dentro] 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

cor
[dentro] O valor RGB da cor cujo nome muda.

strName
[dentro] O novo nome da cor.

Observações

CMFCColorMenuButton::SetColumnsNumber

Define o número de colunas a serem exibidas num controlo de seleção de cor ( objeto CMFCColorBar ).

void SetColumnsNumber(int nColumns);

Parâmetros

nColunas
[dentro] O número de colunas a exibir.

Observações

Consulte também

Gráfico de Hierarquia
Classes
Classe CMFCColorBar
Classe CMFCToolBar
CMFCToolBarsCustomizeDialog Class
Classe CMFCColorButton