Radio Buttons in MFC (Visual Studio 2008 / C++)






4.85/5 (12 votes)
A quick and dirty description of how to use radio buttons in MFC
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 toTrue
. - All other radio buttons must have the property "
Group
" set toFalse
.
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 toDDX_Radio
similar to the following (whereIDC_RADIO_LEDTYPE1
is theID
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 oftrue
(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 offalse
(indicates writing):UpdateData (FALSE);