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


Класс 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см. в разделе "Общие классы диалогов"

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

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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
Диаграмма иерархии