CColorListBox - A list box with colored strings

Environment: Windows NT4 SP4, Visual C++ 6

ColorLBTest

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));

Downloads

Download demo project - 20 Kb
Download source - 4 Kb


Comments

  • god job!

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

    thanks

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

Top White Papers and Webcasts

  • Hurricane Sandy was one of the most destructive natural disasters that the United States has ever experienced. Read this success story to learn how Datto protected its partners and their customers with proactive business continuity planning, heroic employee efforts, and the right mix of technology and support. With storm surges over 12 feet, winds that exceeded 90 mph, and a diameter spanning more than 900 miles, Sandy resulted in power outages to approximately 7.5 million people, and caused an estimated $50 …

  • Live Event Date: April 22, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Database professionals — whether developers or DBAs — can often save valuable time by learning to get the most from their new or existing productivity tools. Whether you're responsible for managing database projects, performing database health checks and reporting, analyzing code, or measuring software engineering metrics, it's likely you're not taking advantage of some of the lesser-known features of Toad from Dell. Attend this live …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds