2008-09-16 6 views
2

Lorsque j'initialise une boîte de dialogue, je souhaite sélectionner l'un des boutons radio du formulaire. Je ne vois pas un moyen d'associer une variable de contrôle en utilisant l'assistant de classe, comme vous le feriez normalement avec CButtons, CComboBoxes, etc ...Sélection par programme d'un bouton radio MFC

En outre, il ne aime pas une classe CRadioButton existe même.

Comment puis-je sélectionner l'un des boutons radio?

Répondre

7

Les boutons radio et les boutons de contrôle ne sont que des boutons. Utilisez un contrôle CButton et utilisez GetCheck/SetCheck.

6

Aller sur ce mos dit, ce qui suit travaillé a fait l'affaire:

CButton* pButton = (CButton*)GetDlgItem(IDC_RADIOBUTTON); 
pButton->SetCheck(true); 
+0

S'il vous plaît voter sa réponse jusqu'à alors. – Roel

17

Utilisez CWnd::CheckRadioButton pour régler sélectionner un bouton dans un groupe et CWnd::GetCheckedRadioButton pour récupérer l'ID du bouton sélectionné. Veillez à appeler ces méthodes sur votre objet de dialogue, et non sur les objets des boutons radio.

+0

Cela devrait être la réponse acceptée. ** NOTE: ** Il est ** 'Dialog->' ** et non 'RadioButton->' – sergiol

+0

Je suis arrivé ici parce que j'obtiens un 'ASSERT' sur' DDX_Radio' suite à un 'pRadioButton-> SetCheck() 'appelée à partir de l'appel' UpdateData' qui se déclenche lorsque la valeur du bouton radio est affectée plusieurs fois. – sergiol

0
void CMyDlg::DoDataExchange(CDataExchange* pDX) 
{ 
    ... 
    DDX_Radio(pDX, IDC_RADIO1, m_Radio); 
    ... 
} 

mais il est le même Assistant chose génère

0

Vous pouvez utiliser ce one-liner:

::SendMessage(GetDlgItem(IDC_RADIO1)->m_hWnd, BM_SETCHECK, BST_CHECKED, NULL); 
Questions connexes