Поделиться через


Класс CMFCColorMenuButton

Класс CMFCColorMenuButton поддерживает команду меню или кнопку панели инструментов, которая запускает диалоговое окно выбора цвета.

Синтаксис

class CMFCColorMenuButton : public CMFCToolBarMenuButton

Участники

Открытые конструкторы

Имя Описание
CMFCColorMenuButton::CMFCColorMenuButton Формирует объект CMFCColorMenuButton.

Открытые методы

Имя Описание
CMFCColorMenuButton::EnableAutomaticButton Включает и отключает кнопку "автоматически", расположенную над обычными кнопками цвета. (Стандартная автоматическая кнопка "Стандартная система" помечена Автоматически.)
CMFCColorMenuButton::EnableDocumentColors Позволяет отображать цвета, относящиеся к документу, а не системные цвета.
CMFCColorMenuButton::EnableOtherButton Включает и отключает кнопку "другой", расположенную под обычными кнопками цвета. (Стандартная система "другая" кнопка помечена Дополнительные цвета.)
CMFCColorMenuButton::EnableTearOff Позволяет оторвать цветовую область.
CMFCColorMenuButton::GetAutomaticColor Извлекает текущий автоматический цвет.
CMFCColorMenuButton::GetColor Извлекает цвет текущей кнопки.
CMFCColorMenuButton::GetColorByCmdID Извлекает цвет, соответствующий указанному идентификатору команды.
CMFCColorMenuButton::OnChangeParentWnd Вызывается платформой при изменении родительского окна.
CMFCColorMenuButton::OpenColorDialog Открывает диалоговое окно выбора цвета.
CMFCColorMenuButton::SetColor Задает цвет текущей кнопки цвета.
CMFCColorMenuButton::SetColorByCmdID Задает цвет указанной кнопки меню цвета.
CMFCColorMenuButton::SetColorName Задает новое имя для указанного цвета.
CMFCColorMenuButton::SetColumnsNumber Задает количество столбцов, отображаемых CMFCColorBar объектом.

Защищенные методы

Имя Описание
CMFCColorMenuButton::CopyFrom Копирует другую кнопку панели инструментов в текущую кнопку.
CMFCColorMenuButton::CreatePopupMenu Создает диалоговое окно выбора цвета.
CMFCColorMenuButton::IsEmptyMenuAllowed Указывает, поддерживаются ли пустые меню.
CMFCColorMenuButton::OnDraw Вызывается платформой для отображения изображения на кнопке.
CMFCColorMenuButton::OnDrawOnCustomizeList Вызывается платформой перед CMFCColorMenuButton отображением объекта в списке диалогового окна настройки панели инструментов.

Замечания

Чтобы заменить исходную команду меню или кнопку CMFCColorMenuButton панели инструментов объектом, создайте CMFCColorMenuButton объект, задайте все соответствующие стили класса CMFCColorBar и вызовите ReplaceButton метод класса CMFCToolBar . При настройке панели инструментов вызовите метод CMFCToolBarsCustomizeDialog::ReplaceButton .

Диалоговое окно выбора цветов создается во время обработки обработчика событий CMFCColorMenuButton::CreatePopupMenu . Обработчик событий уведомляет родительский кадр с WM_COMMAND сообщением. Объект CMFCColorMenuButton отправляет идентификатор элемента управления, назначенный исходной команде меню или кнопке панели инструментов.

Пример

В следующем примере показано, как создать и настроить кнопку меню цвета с помощью различных методов в CMFCColorMenuButton классе. В примере CPalette сначала создается объект, а затем используется для создания объекта CMFCColorMenuButton класса. Затем CMFCColorMenuButton объект настраивается, включив автоматические и другие кнопки, а также задав его цвет и количество столбцов. Этот код является частью примера 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;
}

Иерархия наследования

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

Требования

Заголовок: afxcolormenubutton.h

CMFCColorMenuButton::CMFCColorMenuButton

Формирует объект CMFCColorMenuButton.

CMFCColorMenuButton();

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

Параметры

uiCmdID
[in] Идентификатор команды кнопки.

lpszText
[in] Текст кнопки.

pPalette
[in] Указатель на цветовую палитру кнопки.

Возвращаемое значение

Замечания

Первый конструктор — это конструктор по умолчанию. Текущий цвет объекта и автоматический цвет инициализируются в черный (RGB(0, 0, 0)).

Второй конструктор инициализирует кнопку цветом, соответствующим указанному идентификатору команды.

CMFCColorMenuButton::CopyFrom

Копирует один объект, производный от класса CMFCToolBarMenuButton, в другой.

virtual void CopyFrom(const CMFCToolBarButton& src);

Параметры

src
[in] Кнопка источника для копирования.

Замечания

Переопределите этот метод для копирования объектов, производных от CMFCColorMenuButton объекта.

CMFCColorMenuButton::CreatePopupMenu

Создает диалоговое окно выбора цвета.

virtual CMFCPopupMenu* CreatePopupMenu();

Возвращаемое значение

Объект, представляющий диалоговое окно выбора цветов.

Замечания

Этот метод вызывается платформой, когда пользователь нажимает кнопку меню цвета.

CMFCColorMenuButton::EnableAutomaticButton

Включает и отключает кнопку "автоматически", расположенную над обычными кнопками цвета. (Стандартная автоматическая кнопка "Стандартная система" помечена Автоматически.)

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

Параметры

lpszLabel
[in] Задает текст кнопки, отображаемый при автоматическом запуске кнопки.

colorAutomatic
[in] Задает новый автоматический цвет.

bEnable
[in] Указывает, является ли кнопка автоматической или нет.

Замечания

Автоматическая кнопка применяет текущий цвет по умолчанию.

CMFCColorMenuButton::EnableDocumentColors

Позволяет отображать цвета, относящиеся к документу, а не системные цвета.

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

Параметры

lpszLabel
[in] Задает текст кнопки.

bEnable
[in] ЗНАЧЕНИЕ TRUE для отображения цветов, относящихся к документу, или FALSE для отображения системных цветов.

Замечания

Используйте этот метод, чтобы отобразить текущие цвета документа или цвета системной палитры, когда пользователь нажимает кнопку меню цвета.

CMFCColorMenuButton::EnableOtherButton

Включает и отключает кнопку "другой", расположенную под обычными кнопками цвета. (Стандартная система "другая" кнопка помечена Дополнительные цвета.)

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

Параметры

lpszLabel
[in] Задает текст кнопки.

bAltColorDlg
[in] Укажите ЗНАЧЕНИЕ TRUE, чтобы отобразить диалоговое CMFCColorDialog окно или FALSE, чтобы отобразить стандартное диалоговое окно цвета системы.

bEnable
[in] Укажите ЗНАЧЕНИЕ TRUE, чтобы отобразить кнопку "другой"; в противном случае — ЗНАЧЕНИЕ FALSE. Значение по умолчанию — TRUE.

Замечания

CMFCColorMenuButton::EnableTearOff

Позволяет оторвать цветовую область.

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

Параметры

uiID
[in] Указывает идентификатор для области отключения.

nVertDockColumns
[in] Указывает количество столбцов в области цвета, закрепленной по вертикали, в состоянии отключения.

nHorzDockRows
[in] Указывает количество строк для области цвета, закрепленной по горизонтали, в состоянии отключения.

Замечания

Вызовите этот метод, чтобы включить функцию "слезать" для области цветов, которая появится при CMFCColorMenuButton нажатии кнопки.

CMFCColorMenuButton::GetAutomaticColor

Извлекает текущий автоматический цвет.

COLORREF GetAutomaticColor() const;

Возвращаемое значение

Значение цвета RGB, представляющее текущий автоматический цвет.

Замечания

Вызовите этот метод, чтобы получить автоматический цвет, заданный CMFCColorMenuButton::EnableAutomaticButton.

CMFCColorMenuButton::GetColor

Извлекает цвет текущей кнопки.

COLORREF GetColor() const;

Возвращаемое значение

Цвет кнопки.

Замечания

CMFCColorMenuButton::GetColorByCmdID

Извлекает цвет, соответствующий указанному идентификатору команды.

static COLORREF GetColorByCmdID(UINT uiCmdID);

Параметры

uiCmdID
[in] Идентификатор команды.

Возвращаемое значение

Цвет, соответствующий указанному идентификатору команды.

Замечания

Используйте этот метод, если в приложении есть несколько кнопок цвета. Когда пользователь нажимает кнопку цвета, кнопка отправляет свой идентификатор команды в WM_COMMAND сообщении родительскому элементу. Метод GetColorByCmdID использует идентификатор команды для получения соответствующего цвета.

CMFCColorMenuButton::IsEmptyMenuAllowed

Указывает, поддерживаются ли пустые меню.

virtual BOOL IsEmptyMenuAllowed() const;

Возвращаемое значение

Ненулевое значение, если разрешены пустые меню; в противном случае — ноль.

Замечания

Пустые меню поддерживаются по умолчанию. Переопределите этот метод, чтобы изменить это поведение в производном классе.

CMFCColorMenuButton::OnChangeParentWnd

Вызывается платформой при изменении родительского окна.

virtual void OnChangeParentWnd(CWnd* pWndParent);

Параметры

pWndParent
[in] Указатель на новое родительское окно.

Замечания

CMFCColorMenuButton::OnDraw

Вызывается платформой для отображения изображения на кнопке.

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

Параметры

pDC
[in] Указатель на контекст устройства.

rect
[in] Прямоугольник, ограничивающий область для повторного вывода.

pImages
[in] Указывает на список изображений панели инструментов.

bHorz
[in] Значение TRUE, чтобы указать, что панель инструментов находится в горизонтальном закрепленном состоянии; в противном случае — ЗНАЧЕНИЕ FALSE. Значение по умолчанию — TRUE.

bCustomizeMode
[in] ЗНАЧЕНИЕ TRUE, чтобы указать, что приложение находится в режиме настройки; в противном случае — ЗНАЧЕНИЕ FALSE. Значение по умолчанию — FALSE.

bHighlight
[in] ЗНАЧЕНИЕ TRUE, чтобы указать, что кнопка выделена; в противном случае — ЗНАЧЕНИЕ FALSE. Значение по умолчанию — FALSE.

bDrawBorder
[in] ЗНАЧЕНИЕ TRUE, чтобы указать, что отображается граница кнопки; в противном случае — ЗНАЧЕНИЕ FALSE. Значение по умолчанию — TRUE.

bGrayDisabledButtons
[in] ЗНАЧЕНИЕ TRUE, чтобы указать, что отключенные кнопки серые (неактивные) неактивны; в противном случае — ЗНАЧЕНИЕ FALSE. Значение по умолчанию — TRUE.

Замечания

CMFCColorMenuButton::OnDrawOnCustomizeList

Вызывается платформой перед CMFCColorMenuButton отображением объекта в списке диалогового окна настройки панели инструментов.

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

Параметры

pDC
[in] Указатель на контекст устройства.

rect
[in] Прямоугольник, ограничивающий нарисованную кнопку.

bSelected
[in] ЗНАЧЕНИЕ TRUE указывает, что кнопка находится в выбранном состоянии; в противном случае — ЗНАЧЕНИЕ FALSE.

Возвращаемое значение

Ширина кнопки.

Замечания

Этот метод вызывается платформой, когда CMFCColorMenuButton объект отображается в поле списка во время процесса настройки панели инструментов.

CMFCColorMenuButton::OpenColorDialog

Открывает диалоговое окно выбора цвета.

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

Параметры

colorDefault
[in] Цвет по умолчанию, выбранный в диалоговом окне цвета.

colorRes
[out] Возвращает цвет, который пользователь выбирает в диалоговом окне цвета.

Возвращаемое значение

Ненулевое значение, если пользователь выбирает новый цвет; в противном случае — ноль.

Замечания

При нажатии кнопки меню вызовите этот метод, чтобы открыть диалоговое окно цвета. Если возвращаемое значение ненулевое, цвет, который пользователь выбирает, хранится в параметре colorRes . Используйте метод CMFCColorMenuButton::EnableOtherButton для переключения между стандартным диалоговым окном цвета и диалоговым окном класса CMFCColorDialog.

CMFCColorMenuButton::SetColor

Задает цвет текущей кнопки цвета.

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

Параметры

clr
[in] Значение цвета RGB.

bNotify
[in] ЗНАЧЕНИЕ TRUE, чтобы применить цвет параметра clr к любой связанной кнопке меню или кнопке панели инструментов; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Вызовите этот метод, чтобы изменить цвет текущей кнопки цвета. Если параметр bNotify не является ненулевой, цвет соответствующей кнопки в любом связанном всплывающем меню или панели инструментов изменяется на цвет, указанный параметром clr.

CMFCColorMenuButton::SetColorByCmdID

Задает цвет указанной кнопки меню цвета.

static void SetColorByCmdID(
    UINT uiCmdID,
    COLORREF color);

Параметры

uiCmdID
[in] Идентификатор ресурса кнопки цветового меню.

color
[in] Значение цвета RGB.

CMFCColorMenuButton::SetColorName

Задает новое имя для указанного цвета.

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

Параметры

color
[in] Значение RGB цвета, имя которого изменяется.

strName
[in] Новое имя цвета.

Замечания

CMFCColorMenuButton::SetColumnsNumber

Задает количество столбцов, отображаемых в элементе управления цветом ( объект CMFCColorBar ).

void SetColumnsNumber(int nColumns);

Параметры

nColumns
[in] Число отображаемых столбцов.

Замечания

См. также

Диаграмма иерархии
Классы
Класс CMFCColorBar
Класс CMFCToolBar
Класс CMFCToolBarsCustomizeDialog
Класс CMFCColorButton