Customizable Color Picker | CodeGuru

Customizable Color Picker

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 […]

Written By
CodeGuru Staff
CodeGuru Staff
Feb 3, 1999
2 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More


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

  1. Copy ColorBtn.cpp and ColorBtn.h into your project directory.
  2. Add ColorBtn.cpp to your project.

How to use

  1. Create a button on your dialog. Mark it as “Owner Draw”.
  2. Declare a variable in your dialog class, like this:
    CColorBtn colorbtn;
  3. At OnInitDialog, call SubclassDlgItem, like this:
    colorbtn.SubclassDlgItem(IDC_BUTTON,this); // Use your button ID here
  4. Add Colors to the button’s color dialog using AddColorWell or SetColorsFromArray
  5. Customize the button’s color dialog by setting the number of columns, border widths, and shape variables
  6. 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

Download source – 8 KB

Date Last Updated: February 3, 1999

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.