Стандартное диалоговое окно выбора цвета выглядит так.
Давайте создадим приложение на базе диалогового окна с кнопкой, по которой будет произведен вызов этого диалогового окна. Вот код по нажатию на кнопку.
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( );