Clase CMFCColorMenuButton
La clase CMFCColorMenuButton
admite un comando de menú o un botón de barra de herramientas que inicia un cuadro de diálogo de selector de colores.
Sintaxis
class CMFCColorMenuButton : public CMFCToolBarMenuButton
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CMFCColorMenuButton::CMFCColorMenuButton | Construye un objeto CMFCColorMenuButton . |
Métodos públicos
Nombre | Descripción |
---|---|
CMFCColorMenuButton::EnableAutomaticButton | Habilita y deshabilita un botón "automático" situado encima de los botones de color normales. (El botón automático estándar del sistema tiene la etiqueta Automático). |
CMFCColorMenuButton::EnableDocumentColors | Habilita la presentación de colores específicos del documento en lugar de los colores del sistema. |
CMFCColorMenuButton::EnableOtherButton | Habilita y deshabilita un botón "otro" situado encima de los botones de color normales. (El botón estándar del sistema "otro" tiene la etiqueta Más colores). |
CMFCColorMenuButton::EnableTearOff | Permite quitar un panel de colores. |
CMFCColorMenuButton::GetAutomaticColor | Recupera el color automático actual. |
CMFCColorMenuButton::GetColor | Recupera el color actual del botón. |
CMFCColorMenuButton::GetColorByCmdID | Recupera el color que corresponde a un identificador de comando especificado. |
CMFCColorMenuButton::OnChangeParentWnd | Lo llama el marco si cambia la ventana primaria. |
CMFCColorMenuButton::OpenColorDialog | Abre un cuadro de diálogo de selección de color. |
CMFCColorMenuButton::SetColor | Establece el color del botón de color actual. |
CMFCColorMenuButton::SetColorByCmdID | Establece el color del botón Menú de colores especificado. |
CMFCColorMenuButton::SetColorName | Establece un nuevo nombre para el color especificado. |
CMFCColorMenuButton::SetColumnsNumber | Establece el número de columnas que muestra un objeto CMFCColorBar . |
Métodos protegidos
Nombre | Descripción |
---|---|
CMFCColorMenuButton::CopyFrom | Copia otro botón de la barra de herramientas en el botón actual. |
CMFCColorMenuButton::CreatePopupMenu | Crea un cuadro de diálogo del selector de colores. |
CMFCColorMenuButton::IsEmptyMenuAllowed | Indica si se admiten menús vacíos. |
CMFCColorMenuButton::OnDraw | Lo llama el marco para mostrar una imagen en un botón. |
CMFCColorMenuButton::OnDrawOnCustomizeList | Lo llama el marco antes de que se muestre un objeto CMFCColorMenuButton en la lista de un cuadro de diálogo de personalización de la barra de herramientas. |
Comentarios
Para reemplazar el comando de menú original o el botón de la barra de herramientas por un objeto CMFCColorMenuButton
, cree el objeto CMFCColorMenuButton
, establezca los estilos de la clase CMFCColorBar adecuados y, a continuación, llame al método ReplaceButton
de la clase CMFCToolBar. Si personaliza una barra de herramientas, llame al método CMFCToolBarsCustomizeDialog::ReplaceButton.
El cuadro de diálogo del selector de colores se crea durante el procesamiento del controlador de eventos CMFCColorMenuButton::CreatePopupMenu. El controlador de eventos notifica al marco primario un mensaje de WM_COMMAND. El objeto CMFCColorMenuButton
envía el identificador de control asignado al comando de menú original o al botón de la barra de herramientas.
Ejemplo
En el ejemplo siguiente se muestra cómo crear y configurar un botón Menú de colores mediante varios métodos de la clase CMFCColorMenuButton
. En el ejemplo, primero se crea un objeto CPalette
y, a continuación, se usa para construir un objeto de la clase CMFCColorMenuButton
. A continuación, para configurar el objeto CMFCColorMenuButton
se habilitan sus botones automáticos y los botones "Otros", y se establece su color y el número de columnas. Este código forma parte del ejemplo de WordPad.
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;
}
Jerarquía de herencia
Requisitos
Header: afxcolormenubutton.h
CMFCColorMenuButton::CMFCColorMenuButton
Construye un objeto CMFCColorMenuButton
.
CMFCColorMenuButton();
CMFCColorMenuButton(
UINT uiCmdID,
LPCTSTR lpszText,
CPalette* pPalette=NULL);
Parámetros
uiCmdID
[in] Identificador de comando del botón.
lpszText
[in] Texto del botón.
pPalette
[in] Puntero a la paleta de colores del botón.
Valor devuelto
Comentarios
El primer constructor es el constructor predeterminado. El color actual del objeto y el color automático se inicializan en negro (RGB(0, 0, 0)).
El segundo constructor inicializa el botón en el color que corresponde al identificador de comando especificado.
CMFCColorMenuButton::CopyFrom
Copia un objeto derivado de la clase CMFCToolBarMenuButton en otro.
virtual void CopyFrom(const CMFCToolBarButton& src);
Parámetros
src
[in] Botón de origen que se va a copiar.
Comentarios
Invalide este método para copiar objetos que se deriven del objeto CMFCColorMenuButton
.
CMFCColorMenuButton::CreatePopupMenu
Crea un cuadro de diálogo del selector de colores.
virtual CMFCPopupMenu* CreatePopupMenu();
Valor devuelto
Objeto que representa un cuadro de diálogo del selector de colores.
Comentarios
El marco llama a este método cuando el usuario presiona un botón Menú de colores.
CMFCColorMenuButton::EnableAutomaticButton
Habilita y deshabilita un botón "automático" situado encima de los botones de color normales. (El botón automático estándar del sistema tiene la etiqueta Automático).
void EnableAutomaticButton(
LPCTSTR lpszLabel,
COLORREF colorAutomatic,
BOOL bEnable=TRUE);
Parámetros
lpszLabel
[in] Especifica el texto del botón que se muestra cuando el botón se convierte en automático.
colorAutomatic
[in] Especifica un nuevo color automático.
bEnable
[in] Especifica si el botón es automático o no.
Comentarios
El botón automático aplica el color predeterminado actual.
CMFCColorMenuButton::EnableDocumentColors
Habilita la presentación de colores específicos del documento en lugar de los colores del sistema.
void EnableDocumentColors(
LPCTSTR lpszLabel,
BOOL bEnable=TRUE);
Parámetros
lpszLabel
[in] Especifica el texto del botón.
bEnable
[in] TRUE para mostrar colores específicos del documento o FALSE para mostrar los colores del sistema.
Comentarios
Utilice este método para mostrar los colores actuales del documento o los colores de la paleta del sistema cuando el usuario hace clic en un botón Menú de colores.
CMFCColorMenuButton::EnableOtherButton
Habilita y deshabilita un botón "otro" situado encima de los botones de color normales. (El botón estándar del sistema "otro" tiene la etiqueta Más colores).
void EnableOtherButton(
LPCTSTR lpszLabel,
BOOL bAltColorDlg=TRUE,
BOOL bEnable=TRUE);
Parámetros
lpszLabel
[in] Especifica el texto del botón.
bAltColorDlg
[in] Especifique TRUE para que aparezca el cuadro de diálogo CMFCColorDialog
o FALSE para que aparezca el cuadro de diálogo estándar de color del sistema.
bEnable
[in] Especifique TRUE para que aparezca el botón "Otros"; de lo contrario, FALSE. El valor predeterminado es TRUE.
Comentarios
CMFCColorMenuButton::EnableTearOff
Permite quitar un panel de colores.
void EnableTearOff(
UINT uiID,
int nVertDockColumns=-1,
int nHorzDockRows=-1);
Parámetros
uiID
[in] Especifica el identificador del panel desplazable.
nVertDockColumns
[in] Especifica el número de columnas del panel de color acoplado verticalmente mientras se encuentra en estado desplazable.
nHorzDockRows
[in] Especifica el número de filas del panel de color acoplado horizontalmente mientras se encuentra en estado desplazable.
Comentarios
Llame a este método para habilitar la característica de "desplazamiento" del panel de colores que aparece cuando se presiona el botón CMFCColorMenuButton
.
CMFCColorMenuButton::GetAutomaticColor
Recupera el color automático actual.
COLORREF GetAutomaticColor() const;
Valor devuelto
Valor del color RGB que representa el color automático actual.
Comentarios
Llame a este método para obtener el color automático establecido mediante CMFCColorMenuButton::EnableAutomaticButton.
CMFCColorMenuButton::GetColor
Recupera el color actual del botón.
COLORREF GetColor() const;
Valor devuelto
Color del botón.
Comentarios
CMFCColorMenuButton::GetColorByCmdID
Recupera el color que corresponde a un identificador de comando especificado.
static COLORREF GetColorByCmdID(UINT uiCmdID);
Parámetros
uiCmdID
[in] Identificador de comando.
Valor devuelto
El color que corresponde al identificador de comando especificado.
Comentarios
Use este método cuando tenga varios botones de color en una aplicación. Cuando el usuario hace clic en un botón de color, el botón envía su identificador de comando en un mensaje de WM_COMMAND a su elemento primario. El método GetColorByCmdID
usa el identificador de comando para recuperar el color correspondiente.
CMFCColorMenuButton::IsEmptyMenuAllowed
Indica si se admiten menús vacíos.
virtual BOOL IsEmptyMenuAllowed() const;
Valor devuelto
Distinto de cero si se permiten menús vacíos; de lo contrario, cero.
Comentarios
Los menús vacíos se admiten de forma predeterminada. Invalide este método para cambiar este comportamiento en la clase derivada.
CMFCColorMenuButton::OnChangeParentWnd
Lo llama el marco si cambia la ventana primaria.
virtual void OnChangeParentWnd(CWnd* pWndParent);
Parámetros
pWndParent
[in] Un puntero a la nueva ventana primaria.
Comentarios
CMFCColorMenuButton::OnDraw
Lo llama el marco para mostrar una imagen en un botón.
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] Puntero a un contexto de dispositivo.
rect
[in] Rectángulo que limita el área que se va a volver a dibujar.
pImages
[in] Apunta a una lista de imágenes de la barra de herramientas.
bHorz
[in] TRUE para especificar que la barra de herramientas está en un estado acoplado horizontal; de lo contrario, FALSE. El valor predeterminado es TRUE.
bCustomizeMode
[in] TRUE para especificar que la aplicación está en modo de personalización; de lo contrario, FALSE. El valor predeterminado es FALSE.
bHighlight
[in] TRUE para especificar que el botón está resaltado; de lo contrario, FALSE. El valor predeterminado es FALSE.
bDrawBorder
[in] TRUE para especificar que se muestra el borde del botón; de lo contrario, FALSE. El valor predeterminado es TRUE.
bGrayDisabledButtons
[in] TRUE para especificar que los botones deshabilitados están atenuados; de lo contrario, FALSE. El valor predeterminado es TRUE.
Comentarios
CMFCColorMenuButton::OnDrawOnCustomizeList
Lo llama el marco antes de que se muestre un objeto CMFCColorMenuButton
en la lista de un cuadro de diálogo de personalización de la barra de herramientas.
virtual int OnDrawOnCustomizeList(
CDC* pDC,
const CRect& rect,
BOOL bSelected);
Parámetros
pDC
[in] Puntero a un contexto de dispositivo.
rect
[in] Rectángulo que limita el botón que se va a dibujar.
bSelected
[in] TRUE especifica que el botón está en estado seleccionado; de lo contrario, FALSE.
Valor devuelto
Ancho del botón.
Comentarios
El marco llama a este método cuando se muestra un objeto CMFCColorMenuButton
en el cuadro de lista durante el proceso de personalización de la barra de herramientas.
CMFCColorMenuButton::OpenColorDialog
Abre un cuadro de diálogo de selección de color.
virtual BOOL OpenColorDialog(
const COLORREF colorDefault,
COLORREF& colorRes);
Parámetros
colorDefault
[in] Color predeterminado seleccionado en el cuadro de diálogo Color.
colorRes
[out] Devuelve el color que el usuario selecciona en el cuadro de diálogo Color.
Valor devuelto
Distinto de cero si el usuario selecciona un nuevo color; de lo contrario, cero.
Comentarios
Cuando se hace clic en el botón de menú, se llama a este método para abrir un cuadro de diálogo Color. Si el valor devuelto es distinto de cero, el color que selecciona el usuario se almacena en el parámetro colorRes. Use el método CMFCColorMenuButton::EnableOtherButton para cambiar entre el cuadro de diálogo estándar "Color" y el cuadro de diálogo Clase CMFCColorDialog.
CMFCColorMenuButton::SetColor
Establece el color del botón de color actual.
virtual void SetColor(
COLORREF clr,
BOOL bNotify=TRUE);
Parámetros
clr
[in] Valor de color RGB.
bNotify
[in] TRUE para aplicar el color del parámetro clr a cualquier botón de menú o botón de la barra de herramientas asociado; de lo contrario, FALSE.
Comentarios
Llame a este método para cambiar el color del botón de color actual. Si el parámetro bNotify es distinto de cero, el color del botón correspondiente en cualquier menú emergente o barra de herramientas asociados se cambia al color especificado por el parámetro clr.
CMFCColorMenuButton::SetColorByCmdID
Establece el color del botón Menú de colores especificado.
static void SetColorByCmdID(
UINT uiCmdID,
COLORREF color);
Parámetros
uiCmdID
[in] Identificador de recurso de un botón Menú de colores.
color
[in] Valor de color RGB.
CMFCColorMenuButton::SetColorName
Establece un nuevo nombre para el color especificado.
static void SetColorName(
COLORREF color,
const CString& strName);
Parámetros
color
[in] Valor RGB del color cuyo nombre cambia.
strName
[in] El nuevo nombre del color.
Comentarios
CMFCColorMenuButton::SetColumnsNumber
Establece el número de columnas que se van a mostrar en un control de selección de color (objeto CMFCColorBar).
void SetColumnsNumber(int nColumns);
Parámetros
nColumns
[in] Número de columnas que se van a mostrar.
Comentarios
Consulte también
Gráfico de jerarquías
Clases
CMFCColorBar (clase)
CMFCToolBar (clase)
CMFCToolBarsCustomizeDialog (clase)
CMFCColorButton (clase)