如何让多个RadioButton成为一组

WuBill 2009-06-03 10:42:48
程序中的几个radio是在OnCreateb函数中用代码创建的,不是用拖控件方式创建的
如何通过代码把他们设成一组,并判断那个radio被选中

最好能给个小例子
...全文
1786 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Allen_zhang 2009-06-04
  • 打赏
  • 举报
回复
这个太简单了,教你一个方法:

下次这样的不知道需要设什么属性,先搞一个对话框,拖几个控件过去,按照你的要求设置好属性后
打开rc文件,找到控件的位置,这样就可以看到有哪些属性设置了。

下面是我的一个例子,通过下面可以看到你需要的属性了
第一个设置的属性有BS_AUTORADIOBUTTON | WS_GROUP,其他的需要设置的属性有BS_AUTORADIOBUTTON。这样就可以了


CONTROL "Radio1",IDC_RADIO_PRECISE,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,175,38,78,10
CONTROL "Radio2",IDC_RADIO_ADVANCED,"Button",
BS_AUTORADIOBUTTON,175,53,78,10

killbug2004 2009-06-04
  • 打赏
  • 举报
回复
操作参考
http://blog.csdn.net/zhaoxiafei/archive/2006/04/29/696581.aspx

按照bxf19830819应该没问题

不过貌似你的rdoCity1/rdoCity2不是一个控件,那样的话可能会有问题,不能使用自动了BS_AUTORADIOBUTTON,要分别响应每一个的点击事件
qqzhangmin520 2009-06-04
  • 打赏
  • 举报
回复
我来学习了
峰白 2009-06-04
  • 打赏
  • 举报
回复
rdoCity1.Create(_T("北京"), WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|WS_GROUP, CRect(10,10,10,10),this, 310);

换成BS_AUTORADIOBUTTON应该就可以了吧
WuBill 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 pzcrfx 的回复:]
很简单,我一般是这样做的!

1 要保证几个radio的ID连续。可以ctrl+D查看目前这些ID的顺序。然后按照你想要的顺序依次点击控件可以改变ID成你想要顺序。
2 响应TAB就要控件属性Tabstop设会true;
3 分别用两个组框框住成一组的radio,并把下一组开头那个radio属性里的Group为true; 组框属性的Group同样设成true
[/Quote]

谢谢,我们的控件都是手工写代码生成的,原来拖控件时,照书上的也会弄,现在全部用代码写,不太会
还有7楼哥们回复的,我按你说的做了,运行后,点别的radio,选中状态不变啊,不会还要每个radio要写鼠标事件函数吧
bragi523 2009-06-04
  • 打赏
  • 举报
回复
都放到一个groupbox里面
pzcrfx 2009-06-04
  • 打赏
  • 举报
回复
很简单,我一般是这样做的!

1 要保证几个radio的ID连续。可以ctrl+D查看目前这些ID的顺序。然后按照你想要的顺序依次点击控件可以改变ID成你想要顺序。
2 响应TAB就要控件属性Tabstop设会true;
3 分别用两个组框框住成一组的radio,并把下一组开头那个radio属性里的Group为true; 组框属性的Group同样设成true
shao99 2009-06-04
  • 打赏
  • 举报
回复
7楼的就可以啊
zhaohongbo83 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bdzwj 的回复:]
先建立一个具有BS_GROUPBOX样式的分组框, 然后把Radio创建在这个分组框中
[/Quote]

这个就可以!
峰白 2009-06-04
  • 打赏
  • 举报
回复
rdoCity1.Create(_T("北京"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON|WS_GROUP, CRect(10,10,10,10),this, 310);

第一条加上WS_GROUP,其余不加

fengrx 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bdzwj 的回复:]
先建立一个具有BS_GROUPBOX样式的分组框, 然后把Radio创建在这个分组框中
[/Quote]

4楼正确。5楼答非所问。
lonelyhacker 2009-06-04
  • 打赏
  • 举报
回复


rdoCity4.Create(_T("西安"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON, CRect(10,10,10,10),this, 313);

一个for循环int i=1;i<4;i++
rdoCity做成一个数组成rdoCity[i],_T("西安")把这些也整合到一个数组中。。313可做成313+i。
bdzwj 2009-06-03
  • 打赏
  • 举报
回复
先建立一个具有BS_GROUPBOX样式的分组框, 然后把Radio创建在这个分组框中
WuBill 2009-06-03
  • 打赏
  • 举报
回复
如上,是用代码创建的,现在如何把他们整成一组?
WuBill 2009-06-03
  • 打赏
  • 举报
回复

rdoCity1.Create(_T("北京"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON, CRect(10,10,10,10),this, 310);
rdoCity2.Create(_T("上海"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON, CRect(10,10,10,10),this, 311);
rdoCity3.Create(_T("广州"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON, CRect(10,10,10,10),this, 312);
rdoCity4.Create(_T("西安"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON, CRect(10,10,10,10),this, 313);
Ryanwen 2009-06-03
  • 打赏
  • 举报
回复
根据状态来调整,先GetCheck得到当前被选中的,再SetCheck设置被选中项

也期待别的朋友给更好的方法

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧