Шаг 129 - Стандартный диалог выбора цвета

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

129.gif (4754 b)

Давайте создадим приложение на базе диалогового окна с кнопкой, по которой будет произведен вызов этого диалогового окна. Вот код по нажатию на кнопку.

void CTestColorDlg::OnButton1() 
{
	CColorDialog cc(NULL,NULL,NULL);
	if (cc.DoModal()==IDOK)
	{
		color=cc.GetColor();
	}
}
Есть стандартный класс CColorDialog, который ответственен за создание диалогового окна выбора цветов. Конструктор класса перегружает все параметры по умолчанию и поэтому в принципе их можно не указывать. Упоминание NULL у меня три раза только для демонстрации того, что эти три параметра существуют.
CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL );

В таком виде программа тоже будет работать.

void CTestColorDlg::OnButton1() 
{
	CColorDialog cc;
	if (cc.DoModal()==IDOK)
	{
		color=cc.GetColor();
	}
}
После объявления класса его можно запустить на выполнение использовавшись DoModal, и если после выбора была нажата кнопка OK (IDOK) можно получить цвета использовав getColor. Результат вернется в формате COLORREF, поэтому переменная color должна быть объявленна как
COLORREF color;
На панели выбора цветов есть как основные цвета так и дополнительные. Когда панель зарускается первый раз дополнительные цвета пустые. Пользователь может их дополнять. Но после выхода из приложения они сбросятся. При необходимости доступа к дополнительным цветам есть функция GetSavedCustomColors, которая вернет указатель на массив из 16 элементов COLORREF
static COLORREF * GetSavedCustomColors( );

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.