15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Выбор цвета в Combo Box (3)


Автор: James R. Twine.

Класс CColorPickerCB, заменяет стандартный Combobox. Данный класс позволяет отображать в списке помимо обыкновенных надписей цвета. Так же класс позволяет добавлять новый цвета или удалять старые прямо во время выполнения Вашей программы. Управление цветами можно осуществлять двумя способами: посредством значения COLORREF, либо по имени выбранного цвета.

The control correctly handles selection, enabled and disabled drawing (see images below of the control is various states). Since the control uses strings for display, the colors can be sorted.

CColorPickerCB Sample Images

Чтобы использовать этот класс, создайте Combobox, и отметьте стили "Owner Draw Fixed" и "Has Strings". Далее присоедините CColorPickerCB к Вашему Combobox, и всё должно заработать :)

Не забудьте зарезервировать доя поля достаточную ширину, так как ширина цветного квадрата занимает 1/4 (четверть) всей ширины.

 

Благодарности  Marcel Galema за то что исправил баги в классе.

 

Список функций public в классе CColorPickerCB:

COLORREF GetSelectedColorValue(void)           // Получить выбранное значение цвета
CString GetSelectedColorName(void);            // Получить выбранное имя цвета
void SetSelectedColorValue(COLORREF crColor)   // Установить выбранное значение цвета
void SetSelectedColorName(PCSTR cpColor);      // Установить выбранное имя цвета
bool RemoveColor(PCSTR cpColor);               // Удалить цвет из списка
bool RemoveColor(COLORREF crColor);            // Удалить цвет из списка
int  AddColor(PCSTR cpName, COLORREF crColor); // Вставить новый цвет

Демонстрационный пример можно взять здесь, а исходник класса CColorPickerCB здесь.