Использование стандартных диалогов


Диалоговое окошко выбора цвета

Для того, чтобы показать диалоговое окошко, позволяющее пользователю выбирать Цвет, сперва необходимо инициализировать структуру CHOOSECOLOR, а затем вызвать функцию ChooseColor. Если пользователь успешно выбрал цвет, то функция вернёт TRUE. В примере, выбранный цвет используется для создания новой кисти.

Струтктура CHOOSECOLOR инициализируется следующим образом:

  • Переменной lpCustColors присваивается значение указателя на статический массив значений. Изначально, цвета в массиве чёрные, однако, массив сделан статическим, чтобы запомнить выбранные пользователем дополнительные цвета.
  • Устанавливаем флаг CC_RGBINIT и присваиваем переменной rgbResult значение цвета, который будет выбран изначально при открытии диалогового окна. Если изначальный цвет не будет указан, то будет выбран чёрный цвет. Переменная rgbCurrent сделана статической, чтобы запомнить последний выбранный пользователем цвет.
  • Устанавливаем флаг CC_FULLOPEN, чтобы дополнительные цвета в диалоговом окошке всегда отображались.

Пример:

CHOOSECOLOR cc; // структура
static COLORREF acrCustClr[16]; // массив цветов
HWND hwnd; // окно - владелец
HBRUSH hbrush; // дескриптор кисти
static DWORD rgbCurrent; // изначальный цвет

// Заполняем CHOOSECOLOR
ZeroMemory(&cc, sizeof(cc));
cc.lStructSize = sizeof(cc);
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;
}

 

 
« Предыдущая статья   Следующая статья »