Класс CColorDialog
Позволяет включить диалоговое окно выбора цвета в приложение.
Синтаксис
class CColorDialog : public CCommonDialog
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CColorDialog::CColorDialog | Формирует объект CColorDialog . |
Открытые методы
Имя | Описание |
---|---|
CColorDialog::D oModal | Отображает диалоговое окно цвета и позволяет пользователю выбирать. |
CColorDialog::GetColor | Возвращает структуру COLORREF , содержащую значения выбранного цвета. |
CColorDialog::GetSavedCustomColors | Извлекает пользовательские цвета, созданные пользователем. |
CColorDialog::SetCurrentColor | Принудительно задает текущий цвет с заданным цветом. |
Защищенные методы
Имя | Описание |
---|---|
CColorDialog::OnColorOK | Переопределите, чтобы проверить цвет, введенный в диалоговое окно. |
Открытые члены данных
Имя | Описание |
---|---|
CColorDialog::m_cc | Структура, используемая для настройки параметров диалогового окна. |
Замечания
CColorDialog
Объект — это диалоговое окно со списком цветов, определенных для системы отображения. Пользователь может выбрать или создать определенный цвет из списка, который затем передается приложению при выходе диалогового окна.
Чтобы создать CColorDialog
объект, используйте предоставленный конструктор или наследуйте новый класс и используйте собственный пользовательский конструктор.
После создания диалогового окна можно задать или изменить любые значения в структуре m_cc , чтобы инициализировать значения элементов управления диалогового окна. Структура m_cc имеет тип CHOOSECOLOR.
После инициализации элементов управления диалогового окна вызовите DoModal
функцию-член, чтобы отобразить диалоговое окно и разрешить пользователю выбрать цвет. DoModal
возвращает выбранный пользователем флажок "ОК" (IDOK) или "Отмена" (IDCANCEL).
Если DoModal
возвращает идентификатор IDOK, можно использовать одну из CColorDialog
функций-членов для получения входных данных пользователем.
Вы можете использовать функцию Windows CommDlgExtendedError , чтобы определить, произошла ли ошибка во время инициализации диалогового окна и узнать больше об ошибке.
CColorDialog
использует файл COMMDLG.DLL, который поставляется с Windows версии 3.1 и более поздними версиями.
Чтобы настроить диалоговое окно, наследуйте класс, CColorDialog
предоставьте пользовательский шаблон диалогового окна и добавьте карту сообщений для обработки уведомлений из расширенных элементов управления. Все необработанные сообщения должны передаваться в базовый класс.
Настройка функции перехватчика не требуется.
Примечание.
При некоторых установках CColorDialog
объект не будет отображаться серым фоном, если вы использовали платформу для создания других CDialog
объектов серым.
Дополнительные сведения об использовании CColorDialog
см. в разделе "Общие классы диалогов"
Иерархия наследования
CColorDialog
Требования
Заголовок: afxdlgs.h
CColorDialog::CColorDialog
Формирует объект CColorDialog
.
CColorDialog(
COLORREF clrInit = 0,
DWORD dwFlags = 0,
CWnd* pParentWnd = NULL);
Параметры
clrInit
Выбор цвета по умолчанию. Если значение не указано, по умолчанию используется RGB(0,0,0) (черный).
dwFlags
Набор флагов, которые настраивают функцию и внешний вид диалогового окна. Дополнительные сведения см . в структуре CHOOSECOLOR в пакете SDK для Windows.
pParentWnd
Указатель на окно родительского или владельца диалогового окна.
Пример
// Show the Color dialog with all the default settings.
CColorDialog dlg1;
dlg1.DoModal();
// Show the fully opened Color dialog with red as the selected color.
CColorDialog dlg2(RGB(255, 0, 0), CC_FULLOPEN);
dlg2.DoModal();
CColorDialog::D oModal
Вызовите эту функцию, чтобы отобразить диалоговое окно общего цвета Windows и разрешить пользователю выбрать цвет.
virtual INT_PTR DoModal();
Возвращаемое значение
IDOK или IDCANCEL. Если идентификатор IDCANCEL возвращается, вызовите функцию Windows CommDlgExtendedError , чтобы определить, произошла ли ошибка.
IDOK и IDCANCEL — это константы, указывающие, выбран ли пользователь кнопку "ОК" или "Отмена".
Замечания
Если вы хотите инициализировать различные параметры диалогового окна цвета, задав элементы структуры m_cc , это необходимо сделать перед вызовом DoModal
, но после создания объекта диалогового окна.
После вызова DoModal
можно вызвать другие функции-члены, чтобы получить параметры или данные, введенные пользователем в диалоговом окне.
Пример
См. пример CColorDialog ::CColorDialog.
CColorDialog::GetColor
Вызовите эту функцию после вызова DoModal
, чтобы получить сведения о цвете, выбранном пользователем.
COLORREF GetColor() const;
Возвращаемое значение
Значение COLORREF, содержащее сведения RGB для цвета, выбранного в диалоговом окне цвета.
Пример
// Get the selected color from the CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
COLORREF color = dlg.GetColor();
TRACE(_T("RGB value of the selected color - red = %u, ")
_T("green = %u, blue = %u\n"),
GetRValue(color), GetGValue(color), GetBValue(color));
}
CColorDialog::GetSavedCustomColors
CColorDialog
Объекты позволяют пользователю в дополнение к выбору цветов определять до 16 пользовательских цветов.
static COLORREF* PASCAL GetSavedCustomColors();
Возвращаемое значение
Указатель на массив из 16 значений цветов RGB, которые хранят пользовательские цвета, созданные пользователем.
Замечания
Функция-член GetSavedCustomColors
предоставляет доступ к этим цветам. Эти цвета можно получить после возврата идентификатора DoModal .
Каждый из 16 RGB-значений в возвращаемом массиве инициализирован в RGB(255 255 255) (белый). Пользовательские цвета, выбранные пользователем, сохраняются только между вызовами диалогового окна в приложении. Если вы хотите сохранить эти цвета между вызовами приложения, их необходимо сохранить другим способом, например при инициализации (). INI) файл.
Пример
// Get a pointer to an array of 16 RGB color values that stores
// custom colors created by the user from CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
COLORREF *ccolor = dlg.GetSavedCustomColors();
for (int i = 0; i < 16; i++)
{
TRACE(_T("RGB value of the selected color - red = %u, ")
_T("green = %u, blue = %u\n"),
GetRValue(ccolor[i]),
GetGValue(ccolor[i]),
GetBValue(ccolor[i]));
}
}
CColorDialog::m_cc
Структура типа CHOOSECOLOR, элементы которой хранят характеристики и значения диалогового окна.
CHOOSECOLOR m_cc;
Замечания
После создания CColorDialog
объекта можно использовать m_cc для задания различных аспектов диалогового окна перед вызовом функции-члена DoModal .
Пример
// The code below uses CColorDialog::m_cc data member to
// customize the settings of CColorDialog. The CColorDialog will
// be shown as full open and with red as the selected color.
CColorDialog dlg;
dlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT;
dlg.m_cc.rgbResult = RGB(255, 0, 0);
dlg.DoModal();
CColorDialog::OnColorOK
Переопределите, чтобы проверить цвет, введенный в диалоговое окно.
virtual BOOL OnColorOK();
Возвращаемое значение
Ненулевое значение, если диалоговое окно не должно быть отклонено; в противном случае 0, чтобы принять введенный цвет.
Замечания
Переопределите эту функцию, только если необходимо предоставить пользовательскую проверку цвета, выбранного пользователем в диалоговом окне цвета.
Пользователь может выбрать цвет одним из следующих двух методов:
Щелкнув цвет на цветовой палитре. Затем значения RGB выбранного цвета отражаются в соответствующих полях редактирования RGB.
Ввод значений в полях редактирования RGB
Переопределение OnColorOK
позволяет отклонить цвет, который пользователь вводит в диалоговое окно общего цвета по любой причине.
Как правило, эту функцию не нужно использовать, так как платформа предоставляет проверку цветов по умолчанию и отображает окно сообщения, если введен недопустимый цвет.
Вы можете вызвать SetCurrentColor изнутри OnColorOK
, чтобы принудительно выбрать цвет. После OnColorOK
запуска (то есть пользователь нажимает кнопку "ОК ", чтобы принять изменение цвета), можно вызвать GetColor , чтобы получить значение RGB нового цвета.
Пример
// Override OnColorOK to validate the color entered to the
// Red, Green, and Blue edit controls. If the color
// is BLACK (i.e. RGB(0, 0,0)), then force the current color
// selection to be the color initially selected when the
// dialog box is created. The color dialog won't close so
// user can enter a new color.
BOOL CMyColorDlg::OnColorOK()
{
// Value in Red edit control.
COLORREF clrref = GetColor();
if (RGB(0, 0, 0) == clrref)
{
AfxMessageBox(_T("BLACK is not an acceptable color. ")
_T("Please enter a color again"));
// GetColor() returns initially selected color.
SetCurrentColor(GetColor());
// Won't dismiss color dialog.
return TRUE;
}
// OK to dismiss color dialog.
return FALSE;
}
CColorDialog::SetCurrentColor
Вызовите эту функцию после вызова DoModal
принудительного выделения текущего цвета к значению цвета, указанному в clr.
void SetCurrentColor(COLORREF clr);
Параметры
clr
Значение цвета RGB.
Замечания
Эта функция вызывается из обработчика сообщений или OnColorOK
. Диалоговое окно автоматически обновляет выбор пользователя на основе значения параметра clr .
Пример
См. пример CColorDialog ::OnColorOK.
См. также
Пример MDI MFC
Пример DRAWCLI MFC
Класс CCommonDialog
Диаграмма иерархии