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