As a starting point, I used Luis Ortega’s code from
A Color Picker.
This customizable color picker was designed because I needed a color picker that could calculate itself
when passed an array of colors. I didn’t want to use a resource file, so the entire color dialog is created dynamically
from memory. This makes using the control quick and easy. I have included methods for customizing the border sizes, number
of well columns, well heights, and well shapes. The control is designed for loading colors at run-time (from a database,for example).
There is not support for serialization, persistance to the registry, or an “other” button. These can be easily added
if needed. My project didn’t need them, so I didn’t bother adding them.
A demo project is included. I hope someone else can get some use out of this code, too. 🙂
How to include in your project
- Copy ColorBtn.cpp and ColorBtn.h into your project directory.
- Add ColorBtn.cpp to your project.
How to use
- Create a button on your dialog. Mark it as “Owner Draw”.
- Declare a variable in your dialog class, like this:
CColorBtn colorbtn; - At OnInitDialog, call SubclassDlgItem, like this:
colorbtn.SubclassDlgItem(IDC_BUTTON,this); // Use your button ID here - Add Colors to the button’s color dialog using AddColorWell or SetColorsFromArray
- Customize the button’s color dialog by setting the number of columns, border widths, and shape variables
- Repeat the process for each button you want. (See the sample project provided for more details)
You can set and read the selected color using the “m_CurrentColor” member variable.
Download compiled demo app (no project files) – 81 KB
Download demo (project files) – 40 KB
Date Last Updated: February 3, 1999