Класс 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;
}
Иерархия наследования
Требования
Заголовок: 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