CbuttonListBox, a ListBox Populated with LED Buttons | CodeGuru

CbuttonListBox, a ListBox Populated with LED Buttons

Environment: Developed and tested on Win2000 using VC6 Recently, I needed to present a user interface incorporating a large number of buttons. Each button caused an activity to start and would run for an indeterminate length of time. I wanted to indicate this activity and associate it with the button that started it. I came […]

Written By
CodeGuru Staff
CodeGuru Staff
Apr 29, 2003
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

Environment: Developed and tested on Win2000 using VC6

Recently, I needed to present a user interface incorporating a large number of buttons. Each button caused an activity to start and would run for an indeterminate length of time. I wanted to indicate this activity and associate it with the button that started it.

I came up with CbuttonList, a list box populated with buttons containing a flashing LED to show activity (an example of Monte Variakojis’ excellent CLed class). CbuttonListBox is a simple example of sub classing of CButton and ClistBox. It is easy to implement; just follow these steps:

  1. Copy the LED bitmap into the res directory of your project.
  2. Copy CLed.cpp and .h, CbuttonListBox.cpp and .h, CledButton.cpp and .h files into your project directory and add them to your project through the IDE.
  3. Add a Bitmap resource to the project and name it IDB_LEDS.
  4. Place a list box on your dialog and alter its properties as below:
    1. Selection – Single
    2. Owner Draw – Fixed
    3. Check Notify
    4. Check Vertical Scroll Bar
    5. Check No Integral Height
  5. Add a member variable for the ListBox and change its type to CbuttonListBox in the header (having added the #include “ButtonListBox.h” in your Dialog header).
  6. In the OnInitDialog method of the dialog, you can add your buttons to the list, passing a String to be the buttons text.
  7.   m_ButtonListBox.AddItem("Test 1");

    There is a #define in CbuttonListBox.h that controls the number of buttons placed in the ListBox. This may need to be altered based on the size of your ListBox on your dialog.

      #define NUMBER_OF_BUTTONS_IN_LIST_VIEW 10    // 10 buttons

    When a button is clicked, a message is posted to the CbuttonListBox class with the Buttons this pointer as an lParam. This allows the click to be associated with a particular button. Code must be added to the PreTranslateMessage(MSG* pMsg) method in the CbuttonListBox class to handle these events.

Thats It! I hope this is of some use to you. Feel free to use these classes any way you like. Any comments or improvements would be appreciated.

Downloads

Download demo project – 38 Kb

Download source code – 9 Kb

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.