以编程方式选择MFC单选按钮

3
当我初始化对话框时,我想选择表单中的一个单选按钮。我没有看到使用类向导关联控件变量的方法,就像您通常会使用CButtons、CComboBoxes等一样。
此外,似乎并不存在CRadioButton类。
我该如何选择多个单选按钮中的一个?
5个回答

19

1
它应该是被接受的答案。注意:它是 Dialog-> 而不是 RadioButton-> - sergiol
我之所以到这里,是因为在多次分配单选按钮值时触发了UpdateData调用,从而导致对DDX_RadioASSERT,这是由于调用了pRadioButton->SetCheck() - sergiol
这些方法依赖于控件的ID顺序。DDX_Radio使用Z-order和WS_GROUP标志。这避免了严格排序资源ID的问题。 - mgruber4

8

根据mos所说,以下方法能解决问题:

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

8

单选按钮和复选框只是普通的按钮。使用CButton控件并使用GetCheck/SetCheck方法。


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

但这是向导生成的相同内容。


这个选项比CWnd::GetCheckedRadioButton()更好,因为它使用窗口Z顺序来定位按钮,并且可以独立于ID值工作,而ID值的维护可能会很麻烦。 - mgruber4

1
你可以使用这个一行代码:
::SendMessage(GetDlgItem(IDC_RADIO1)->m_hWnd, BM_SETCHECK, BST_CHECKED, NULL);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接