Sélectionner par programme un bouton radio MFC
Question
Lorsque j'initialise une boîte de dialogue, j'aimerais sélectionner l'un des boutons radio du formulaire. Je ne vois pas comment associer une variable de contrôle à l’aide de l’assistant de classe, comme vous le feriez habituellement avec CButtons, CComboBoxes, etc ...
De plus, il n'aime pas qu'une classe CRadioButton existe même.
Comment sélectionner l'un des boutons radio?
La solution
Les boutons radio et les boutons de contrôle ne sont que des boutons. Utilisez un contrôle CButton
et utilisez GetCheck
/ SetCheck
.
Autres conseils
Utilisez CWnd :: CheckRadioButton . définir un bouton dans un groupe et CWnd :: GetCheckedRadioButton pour récupérer l'ID du bouton sélectionné. Assurez-vous d'appeler ces méthodes sur votre objet de dialogue et non sur les objets de bouton radio.
En reprenant ce que mos a dit, voici ce qui a fonctionné:
CButton* pButton = (CButton*)GetDlgItem(IDC_RADIOBUTTON);
pButton->SetCheck(true);
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
...
DDX_Radio(pDX, IDC_RADIO1, m_Radio);
...
}
mais c'est la même chose que l'Assistant génère
Vous pouvez utiliser ce one-liner:
::SendMessage(GetDlgItem(IDC_RADIO1)->m_hWnd, BM_SETCHECK, BST_CHECKED, NULL);