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.
- Copy the LED bitmap into the res directory of your project.
- 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.
- Add a Bitmap resource to the project and name it IDB_LEDS.
- Place a list box on your dialog and alter its properties as below:
- Selection - Single
- Owner Draw - Fixed
- Check Notify
- Check Vertical Scroll Bar
- Check No Integral Height
- 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).
- In the OnInitDialog method of the dialog, you can add your buttons to the list, passing a String to be the buttons text.
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 buttonsWhen 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.
DownloadsDownload demo project - 38 Kb
Download source code - 9 Kb