Выбор цвета
Эта статья описывает типовой код, который отображает на экране диалоговое окно
Цвет (Color), когда пользователь может выбрать цвет. Этот типовой код сначала инициализирует структуру CHOOSECOLOR, а затем вызывает функцию ChooseColor, чтобы изобразить диалоговое окно. Если функция возвращает значение ИСТИНА (TRUE), то это служит признаком того, что пользователь выбрал цвет, а типовой код использует выбранный цвет для создания новой сплошной кисти.Этот пример использует структуру CHOOSECOLOR для инициализации диалогового окна как ниже указано:
·Инициализирует член lpCustColors с указателем на статический массив значений. Цвета в массиве первоначально черные, но статический массив сохраняет пользовательские цвета, созданные пользователем, посредством использования последующего вызова ChooseColor.
Устанавливает флажок CC_RGBINIT и инициализирует член rgbResult, чтобы установить цвет, который первоначально был выбран, когда открывалось диалоговое окно. Если он не определен, изначально выбирается черный цвет. Пример, использует статическую переменную rgbCurrent, чтобы сохранить значение выбора между обращениями к ChooseColor
·Устанавливает флажок CC_FULLOPEN, так что диалоговое окно всегда отображает пользовательские дополнительные цвета.
Пример
CHOOSECOLOR cc; // структура стандартного // диалогового окна static COLORREF acrCustClr[16]; // массив доп. цветов HWND hwnd; // окно - владелец HBRUSH hbrush; // дескриптор кисти static DWORD rgbCurrent; // начальный выбранный цвет // Инициализация структуры CHOOSECOLOR ZeroMemory(&cc, sizeof(CHOOSECOLOR)); cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hwnd; cc.lpCustColors = (LPDWORD) acrCustClr; cc.rgbResult = rgbCurrent; cc.Flags = CC_FULLOPEN | CC_RGBINIT; if (ChooseColor(&cc)==TRUE) { hbrush = CreateSolidBrush(cc.rgbResult); rgbCurrent = cc.rgbResult; } |