Selezionare a livello di codice un pulsante di opzione MFC
Domanda
Quando inizializzo una finestra di dialogo, vorrei selezionare uno dei pulsanti di opzione sul modulo.Non vedo un modo per associare una variabile di controllo utilizzando la procedura guidata di classe, come faresti normalmente con CButtons, CComboBoxes, ecc...
Inoltre, non piace nemmeno che esista una classe CRadioButton.
Come posso selezionare uno dei numerosi pulsanti di opzione?
Soluzione
I pulsanti di opzione e i pulsanti di controllo sono solo pulsanti.Usare un CButton
controllo e utilizzo GetCheck
/SetCheck
.
Altri suggerimenti
Utilizzo CWnd::CheckRadioButton per impostare selezionare un pulsante in un gruppo e CWnd::GetCheckedRadioButton per recuperare l'ID del pulsante selezionato.Assicurati di chiamare questi metodi sul tuo oggetto di dialogo e non su nessuno degli oggetti del pulsante di opzione.
Seguendo quello che ha detto mos, quanto segue ha funzionato:
CButton* pButton = (CButton*)GetDlgItem(IDC_RADIOBUTTON);
pButton->SetCheck(true);
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
...
DDX_Radio(pDX, IDC_RADIO1, m_Radio);
...
}
ma è la stessa cosa che Wizard genera
Puoi usare questa riga:
::SendMessage(GetDlgItem(IDC_RADIO1)->m_hWnd, BM_SETCHECK, BST_CHECKED, NULL);