CColorListBox - A list box with colored strings

Environment: Windows NT4 SP4, Visual C++ 6


This CColorListBox class is based on Patrice Godard's colored list box class of the same name, with the following additions:

  • The focus rectangle is now drawn only when the control has the input focus.
  • Items in the list are properly colored when the list box is disabled.
  • Items in the list are properly displayed when the LBS_USETABSTOPS style is set.
  • The entire rectangle of the selected item is now colored, instead of just the text background rectangle.
  • When an item is selected, the text color inverts, and the highlight color is the original text color (like the Cyan list item in the above graphic).

The following public methods are used to set the item text and/or color:

int AddString(LPCTSTR lpszItem);
int AddString(LPCTSTR lpszItem, COLORREF rgb);
int InsertString(int nIndex, LPCTSTR lpszItem);
int InsertString(int nIndex, LPCTSTR lpszItem, COLORREF rgb);
void SetItemColor(int nIndex, COLORREF rgb);

Follow these steps to add a CColorListBox to a dialog:

  • Add ColorListBox.cpp and ColorListBox.h to your project.
  • Add include "ColorListBox.h" to the header file of your dialog class.
  • Add a list box control to your dialog, with the Owner Draw style set to Fixed or Variable, and with the Has Strings style checked.
  • Use ClassWizard to add a member variable of type CColorListBox for the list box you just added. If CColorListBox is not in the Variable Type list, choose CListBox, and manually change the type to CColorListBox later.

Now add or insert strings into the list box, using the overloaded functions:

m_lbColor.AddString("Green", RGB(0, 255, 0));
m_lbColor.InsertString(0, "Red", RGB(255, 0, 0));


Download demo project - 20 Kb
Download source - 4 Kb


  • god job!

    Posted by marine on 06/02/2012 11:58am


Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there's simply not enough quality talent to go around. In response, companies often resort to inferior solutions -- hiring substandard developers and engineers, recruiting talent on a part-time or temporary basis, poaching people from competitors, or burdening an already stressed IT staff for more of their labor. Fortunately, there's a better solution. Read this white paper to learn the business value of …

  • Thanks to the Internet of Things (IoT), physical assets are turning into participants in real-time global digital markets. The countless types of assets around us will become as easily indexed, searched and traded as any online commodity. While some industries will be tougher to transform than others – those with physical limitations, such as manufacturing, will be harder to digitize – untold economic opportunities exist for growth and advancement. Our research shows this will create a new "Economy …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date