This is a quick and dirty description of how to use radio buttons in MFC, written because I could not find this information in a single place on the web.
In the dialog editor:
- Create a new group with the group box control and set a meaningful caption.
- Add radio button controls inside the group.
- The radio buttons must have ascending tab order.
- The first radio button (in tab order) must have the property "
Group
" set to True
. - All other radio buttons must have the property "
Group
" set to False
.
It should look similar to this:

In the header file defining the dialog class:
- Add a member variable of type
int
that will store which radio button is selected (none: -1, first: 0, second: 1, and so on).
Example:
int m_nLEDType;
In the CPP file implementing the dialog class:
- In the constructor, initialize the member variable (with 0)
Example:
CDialogConfig::CDialogConfig(CMainFrame* pMainFrame) :
CDialog(CDialogConfig::IDD, pMainFrame), m_nLEDType(0)
- In
DoDataExchange
, add a call to DDX_Radio
similar to the following (where IDC_RADIO_LEDTYPE1
is the ID
of the first radio button):
DDX_Radio(pDX, IDC_RADIO_LEDTYPE1, m_nLEDType);
When you want to read which radio button is selected:
- Call
UpdateData
with a parameter of true
(indicates reading):
UpdateData (TRUE);
- After
UpdateData
has been called, the member variable (m_nLEDType
in this example) has the current state of the buttons.
When you want to select one of the buttons programmatically:
- Set the member variable to the correct value (none selected: -1, first button selected: 0, second button selected: 1, and so on)
- Call
UpdateData
with a parameter of false
(indicates writing):
UpdateData (FALSE);
Helge Klein is an independent consultant and developer. As a consultant, he has worked in Windows and Citrix projects for various larger German corporations. As a developer, he architected sepago's user profile management product sepagoPROFILE whose successor is now available as Citrix Profile Management. In 2009 Helge received the Citrix Technology Professional (CTP) Award, in 2011 he was nominated a Microsoft Most Valuable Professional (MVP).
Helge's professional interests are focused on Microsoft server technologies, various Citrix products and programming in several languages. He publishes his knowledge in English in his blog at
http://helgeklein.com/blog. Helge can also be found on Twitter as
@HelgeKlein. He has presented on many occasions, e.g. Citrix TechEdge Munich 2009, ice Lingen (2009 and 2011), PubForum (2010 and 2011), Microsoft TechDay Online 2010, Citrix Synergy 2011 and 2012.
Helge is the author of
SetACL, a powerful tool for managing Windows permissions from the command line or from scripts and programs. SetACL is open source and has been downloaded more than 500,000 times. SetACL's modern cousin
SetACL Studio comes with an intuitive graphical user interface and is available for a small fee. Another popular tool,
Delprof2, automates the deletion of user profiles.
Helge lives in Cologne, Germany.