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


Comments

  • I have a problem about "Afxtempl.h"

    Posted by Legacy on 07/01/2003 12:00am

    Originally posted by: Tony Hong

    Thanks your source code...

    but i don't know "Afxtempl.h"

    I will wait your answer..

    Reply
  • I have done some thing similar

    Posted by Legacy on 04/30/2003 12:00am

    Originally posted by: Dr.Sai

    Good work I have done some thing similar I will post it one day.

    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 …

  • A help desk is critical to the operations of an IT services business. As a centralized intake location for technical issues, it allows for a responsive and timely solution to get clients and their staff back to business as usual. In addition to handling immediate IT issues, a help desk performs several proactive tasks to ensure clients' IT systems remain operational and downtime is minimized. Thus, utilizing a help desk and following best practices can improve the productivity, efficiency and satisfaction of …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds