Introduction
This control is a static control that creates a simplified toolbar similar to those found in Visual Studio. As the demo application shows, (as do the pictures above), the control creates a series of buttons within a static control. These buttons can be enabled or disabled, and the control can be drawn with or without a static edge.
Using the Control
It is very easy to put this control into your project. Here's an example:
-
Add the files
btnST.cpp
, btnST.h
, ButtonGroupCtl.cpp
and ButtonGroupCtl.h
to your project. These are found in the source download.
-
Create or open a dialog resource to which you would like to add a button group.
-
Insert a static control with the appropriate text (�Options' in the case of the demo). If you would like a border around the group then set the �Static Edge' flag:
-
In ClassWizard for your dialog class, create a member variable that links to the control, and choose the
CButtonGroupCtl
class:
If this does not appear, choose CStatic
and then edit your class definition to use CButtonGroupCtl
instead.
Also in your class definition, add the following line:
#include "ButtonGroupCtl.h"
-
Add a
CImageList
variable to your class, and initialise this in the constructor of you dialog class. For an example of this, see the demo project.
-
To add buttons to the control, in your constructor, use the
AddButton
function:
void AddButton(int nID, int nImage, LPCTSTR pszToolTip)
nID is the ID of the control you wish to add, for instance IDC_NEW
.
nImage is the index of the image from the ImageList you wish to use.
pszToolTip is the tooltip you wish to use for the control. You may leave this blank.
Note that you cannot add or remove buttons from the control once it has been subclassed � it is not intended as a replacement for the toolbar control.
-
Now, add message handlers for the buttons in your dialog class. You must do this
manually by first adding a function (e.g.
OnAdd()
) to your class:
You should then add an entry in the message map, for instance:
ON_BN_CLICKED(IDC_NEW, OnAddItem)
Optionally, you can use the EnableButton(nID, bEnable = true)
function to enable and disable buttons at run-time. Note that you cannot call this function until the control has been subclassed. If you want buttons to be initially enabled or disabled, you should do this in your OnInitDialog()
override.
I hope this article has helped � the class is relatively simple and basic, but this was the aim. I often have come across the problem where items in a list need to be managed but have not had space to have full-blown buttons with text etc. to do this, so wrote this class to solve that problem. I also felt it was a fairly simple user interface concept to understand because of its use in other programs and also because of its similarity to a toolbar control. I may later update it with the ability to have its contents changed after it has been subclassed although I have not come across a need for this yet myself.
Acknowledgements
I would like to thank Davide Calabro (davide_calabro@yahoo.com) for his CButtonST
class.
History
13 May 2001 - updated source files