问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MFC中DLALOG下的RADIO控件怎么达成4选一

发布网友 发布时间:2023-06-08 15:36

我来回答

2个回答

热心网友 时间:2024-08-28 17:05

先为对话框加上2个radio button,分别是Radio1和Radio2。

问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?

关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,
第一种:
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);//不选上
((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck();返回1表示选上,0表示没选上
第二种:
关联一个congtrol型变量(子类化),好ctrl+W(即打开classwizard),点开 Member Variables,咦?怎么没有IDC_RADIO1这个ID?原来是没有分组。因为radio button通常都是成组使用的,在一组里面是互斥的。取消,回到对话框资源面板,右键Radio1查看属性把Group选上,那么,Radio1和 Radio2就是一组了(怎么知道他们是一组的?后面说)。此时,就可以为Radio1增加一congtrol型变量m_ctrlRadio1了。如下:
m_ctrlRadio1.SetCheck(TRUE);
同样可以使用GetCheck()获取状态。
第三种:
关联一个int型变量(同样需要先分组)m_nRadio1,打开对话框构造函数,你会发现有:
m_nRadio1 = -1;m_nRadio1别赋值-1表示哪个都没有选上。如果你把-1改成0,就会发现Radio1默认被选上了,依此类推,m_nRadio1的值为1 就是第二个被选上了(这里同样有问题,哪个是第一个?哪个是第二个?)。获取状态很简单,UpdateData(TRUE)后判断m_nRadio1的值 即可。

问题2:如何使用多组?

多组和一组是一样的使用,只要搞清楚哪个是哪一组的就行了。再为对话框添加Radio3和Radio4。很简单,先为这些Radio Button排个顺序(这 个必须要做,比如你的一组控件有Radio1,Radio2,Radio3,就把它们的TAB顺序分别设为1,2,3,并将Radio1的Group属性 设为True,这样,当选中Radio1的时候和它关联的变量就是0,当选中Radio2的时候和它关联的变量就是1,依此类推),就是排 列他们的TAB ORDER。在对话框资源面板上Ctrl+D,然后按你自己的理想顺序用鼠标逐个点击就可以了。不妨假设Radio1、Radio2、Radio3、 Radio4分别是1、2、3、4。Radio1和Radio3都选上Group属性,那么,1、2是一组,3、4是另外一组,因为分组的原则是在选上 Group属性的这一个开始直到碰到下一个选上Group属性的。你不妨再Ctrl+D,令Radio1、Radio2、Radio3、Radio4分别 是1、3、2、4,那么Radio1和Radio3是一组,如果m_nRadio1=1,此时是Radio3被选上而不是Radio2被选上。分好了组就 分别使用它们吧。

嗯,也许你还要为它们添加鼠标单击事件,非常简单。

单选按钮控件(Radio Button)的使用

关键词: 单选按钮控件 使用方法

一、对单选按钮进行分组:
每组的第一个单选按钮设置属性:Group,Tabstop,Auto;其余按钮设置属性Tabstop,Auto。如:
Radio1、Radio2、Radio3为一组,Radio4、Radio5为一组

设定Radio1属性:Group,Tabstop,Auto
设定Radio2属性:Tabstop,Auto
设定Radio3属性:Tabstop,Auto

设定Radio4属性:Group,Tabstop,Auto
设定Radio5属性:Tabstop,Auto

二、用ClassWizard为单选控件定义变量,每组只能定义一个。如:m_Radio1、m_Radio4。

三、用ClassWizard生成各单选按钮的单击消息函数,并加入内容:

void CWEditView::OnRadio1()
{
m_Radio1 = 0; //第一个单选按钮被选中
}

void CWEditView::OnRadio2()
{
m_Radio1 = 1; //第二个单选按钮被选中
}

void CWEditView::OnRadio3()
{
m_Radio1 = 2; //第三个单选按钮被选中
}

void CWEditView::OnRadio4()
{
m_Radio4 = 0; //第四个单选按钮被选中
}

void CWEditView::OnRadio5()
{
m_Radio4 = 1; //第五个单选按钮被选中
}

四、设置默认按钮:
在定义控件变量时,ClassWizard在构造函数中会把变量初值设为-1,只需把它改为其它值即可。
如:
//{{AFX_DATA_INIT(CUnitBlockTypeFlankPublicAdd)<br>m_Radio1 = 0; //初始时第一个单选按钮被选中<br>m_Radio4 = 0; //初始时第四个单选按钮被选中<br>//}}//Radio Button 使用
使用方法一:
在工程中添加控件后,直接在控件的Click事件中写入需要的代码即可

使用方法二:
1.建立一个基于对话框的用用程序,在其中加入三个Radio Button,ID分别为:
IDC_RADIO1,IDC_RADIO2,IDC_RADIO3

2.控件的初始化:
在对话框类的OnInitDialog中加入代码:
CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO3); //第一个参数为该组的第一个单选按钮的ID
//第二个参数为该组的最后一个单选按钮的ID
//第三个参数为该组中被选中的单选按钮的ID

3.在加入一个Button控件,并为其写入Click事件代码:
int iRadioButton;

iRadioButton="GetCheckedRadioButton"(IDC_RADIO1,IDC_RADIO3);
if(iRadioButton==IDC_RADIO1)
MessageBox("Click Button1");
if(iRadioButton==IDC_RADIO2)
MessageBox("Click Button2");
if(iRadioButton==IDC_RADIO3)
MessageBox("Click Button3");

其他说明:
Radio Button成组使用时,只需保证在添加控件时资源号连续,并且第一个Radio Button的属性中Group被选中即可.
这样就可以给这一组控件添加成员变量使用
例:
1.建立一个基于对话框的应用程序,添加三个Radio Button,和一个Button
选中第一个Radio Button属性中的Group

2.在Button的Click事件中添加代码:
UpdateData(TRUE);
if(m_radio==0)
MessageBox("0");
if(m_radio==1)
MessageBox("1");
if (m_radio==2)
MessageBox("2");
UpdateData(false); 网上抄袭的。都是Group嘛

热心网友 时间:2024-08-28 17:05

把那个单选按钮组成一组就行了。具体做法:最上面的一个单选按钮,把它的"属性","组"勾上。就可以实现4选一了。
如图,VS2017新建MFC对话框之后,工具箱控件不可用怎么办?

当然没法添加工具箱控件,正确的是在资源文件(resource)中找到后缀为.rc的文件,找到打开Dialog里的一个后面为-DLALOG的文件,就可以添加控件了,button一类的

MFC获取同类型的全部控件 MFC控件获得输入焦点什么意思 MFC好用的画图控件 MFC使控件失去焦点的方法 MFC_Demo控件初始化失败 MFC控件 添加时间控件MFC崩溃 mfc控件的使用 mfc列表框控件的使用
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
碗柜纱窗还是玻璃的好 碗柜玻璃上面的花用白醋清洗很容易去处吗? ...每个目录下有上百个.csv文件,如何把每个文件删除第一行和最后一行... 专业技能测试考试大纲有什么用 考的会一样吗 回南天的小知识 喝了牛奶长的痘该怎么处理? 喝牛奶长痘可以喝什么代替 30岁女人冬天穿这些半身裙优雅又减龄 我们常见的各坚果的营养功效 房间门对厕所好吗 多次调用CTreeCtrl的GetItemText方法出错,大家帮忙看下吧 cunit是什么意思 纸五角星的折法 微信交电话费可以开发票吗 梦见珍珠项链吊着翡翠坠子 in like manner是什么意思 动词mimic的过去式是mimiced还是mimicked 吾邪用什么加速器 两个乔念什么? 请问一下两乔关系是怎么一种关系? 为什么两乔不在九族之内 关于描写海霞唯美诗句 洞头一日游洞头一日游 常量数学方法 关于客户端的物理隔离说法正确的是什么 办公桌品牌推荐前台办公桌报价 快手直播预告怎么关闭 娘家人对应的是什么 娘家人包括兄弟姐妹吗 东风标致307三厢怎么样? VC++ combobox addstring函数 世界杯半决赛,历届有那几场比赛踢入加时(30+) 求这个表情的名字,不知道名字把这个表情的表情包下载地址给我也行。 第五人格C牌没了会有记录吗? 第五人格牌子怎么显示 魔兽世界摩克塔克林在哪啊 茹笙是什么意思 拉拉洒吧陪酒叫什么 唱团歌重温入团誓词心得体会 led蓝光芯片封装白光,波长越高,所做出来的显指也越高。是什么原因呢... 冯伟文是什么梗 微博上说的冯薇雯是谁 职帮主速聘网怎么样 英语教学ela是什么意思 Elaps什么意思及同义词 人盯人网格群什么意思 人资就是管人盯人的吗 迅销集团企业理念 下列关于高效减水剂的说法,不正确的是( )。 sfx是什么文件 如何打开SFX文件