Click here to Skip to main content
Click here to Skip to main content

Tagged as

Go to top

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

, 25 Aug 2010
Rate this:
Please Sign up or sign in to vote.
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 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);

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

HelgeKlein
Helge Klein GmbH
Germany Germany
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.
Follow on   Twitter   Google+

Comments and Discussions

 
GeneralDoes not work with CMfcButton PinmemberMichel Wassink29-Jul-14 0:34 
Questionnice summary Pinmemberdr.al13-Apr-14 11:26 
QuestionI recommend avoiding UpdateData at all cost. PinmemberSunny127013-Jan-13 21:23 
Avoiding UpdateData[^]
 
It has many problems with thread etc.
Consider using:
((CButton*)this->GetDlgItem(IDC_RADIO_1)))->SetCheck(BST_CHECKED)

GeneralMy vote of 4 Pinmemberpereillo15-Jun-12 6:31 
QuestionRadio Pinmembertcpmv16-May-12 4:29 
AnswerRe: Radio PinmemberHelgeKlein16-May-12 4:33 
GeneralAlternative PinmvpDavidCrow30-Aug-10 16:47 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140916.1 | Last Updated 25 Aug 2010
Article Copyright 2010 by HelgeKlein
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid