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

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

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)