首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC中的单选按钮选择更改

MFC中的单选按钮选择更改
EN

Stack Overflow用户
提问于 2012-06-05 15:39:31
回答 5查看 21.7K关注 0票数 2

我使用MFC创建了一个对话框,它有5个单选按钮。我希望在其他单选按钮被选中时收到通知。

现在,每当单击任何单选按钮时,我都会收到通知。但我只需要在单选按钮中有更改时才能收到这些通知。

代码语言:javascript
复制
ON_BN_CLICKED(IDC_RADIO1, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO1, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO1, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO1, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO1, &CMyDlg::OnRadioButtonClicked)

谢谢

EN

回答 5

Stack Overflow用户

发布于 2012-06-05 18:48:54

如果我没理解错的话,您想知道某个特定单选按钮(IDC_RADIO1)的选中状态何时发生变化。

然后将此状态作为成员变量存储在对话框类中。int m_radio1Checked;根据需要在构造函数中将其初始化为0或1,并在OnInitDialog()中适当地使用SetCheckRadioButton()

然后处理消息映射中每个单选按钮的单击:

代码语言:javascript
复制
ON_BN_CLICKED(IDC_RADIO1, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO2, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO3, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO4, &CMyDlg::OnRadioButtonClicked)
ON_BN_CLICKED(IDC_RADIO5, &CMyDlg::OnRadioButtonClicked)

并在处理程序中检查是否有更改。

代码语言:javascript
复制
void CMyDlg::OnRadioButtonClicked()
{
  int oldState = m_radio1Checked;
  int newState = GetDlgItem(IDC_RADIO1)->GetChecked();
  m_radio1Checked = newState;
  if (oldState != newState)
    // do something ...
}
票数 4
EN

Stack Overflow用户

发布于 2013-06-17 17:27:41

可以使用ON_CONTROL_RANGE(BN_CLICKED,firstctrlid,lastcntrlid,memberfx)

票数 3
EN

Stack Overflow用户

发布于 2012-06-07 07:09:32

首先创建所有单选按钮的组。使用向导添加整数类型的成员变量。在通用处理程序中,调用UpdateData()并检查变量的值。它应该设置为组中按钮的值(从零开始),从组中的第一个按钮开始设置为0。确保按连续的Z顺序(Tab键顺序)设置按钮。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10893425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档