无符号整形 发表于 2016-11-16 17:52:54

【MFC入门文字教程】11-单选框(Radio Button)

如果要让用户选择多个项,除了列表ListBox,下拉列表ComBobox,还有一个单选框 Radio Button。

冷知识:
Radio Button 的名称来自于汽车收音机的一排选择按钮,它曾风靡一时,汽车收音机的每个按钮被设定为不同的电台,在任意时刻只有一个按钮可以按下

好了,不扯这么多了……进入正题。
使用方法很简单,只需要增加一个 BN_CILCKED 消息的处理程序,单选框被选择时会调用此函数。


实践时间
目标:有三种选项,分别是

小明
小红
小华

当用户单击按钮时告诉用户选了什么

思路:有一个全局变量,当用户选择某个 RadioButton 时设置它,当用户按下 Button 时检查全局变量即可。

注:最下面有代码打包,大家可以自己研究~{:10_254:}
1.切换到对话框,拖3个RadioButton,分别修改Caption为“小明”,“小红”,“小华”,并为他们添加事件处理程序。

2.在[你的工程名]Dlg.cpp的前面定义一个全局变量:
int Global_Flag = 0;
3.拖一个按钮并为它添加事件处理程序。

4.在“小明”单选框,“小红”单选框,“小华”单选框的事件处理程序中添加以下代码:
在小明单选框的事件处理程序里面添加以下内容:
Global_Flag = 1; //选了小明
在小红单选框的事件处理程序里面添加以下内容:
Global_Flag = 2; //选了小红
在小华单选框的事件处理程序里面添加以下内容:
Global_Flag = 3; //选了小华
5.在Button的事件处理程序中添加以下内容(剩下的应该不难了吧~):
if (Global_Flag == 0)
        {
                MessageBox(TEXT("您什么都没选!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
        }
        else if (Global_Flag == 1)
        {
                MessageBox(TEXT("您选了 小明"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
        }
        else if (Global_Flag == 2)
        {
                MessageBox(TEXT("您选了 小红"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
        }
        else if (Global_Flag == 3)
        {
                MessageBox(TEXT("您选了 小华"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
        }
然后,编译运行,效果:


代码打包:


下节预告:
组控件(Group Box)

拈花小仙 发表于 2016-11-17 14:42:20

准备把42个控件教程全做出来哈

一笑见苍穹 发表于 2019-2-3 23:01:14

注意: 使用单选框   放控件的时候不要复制    不要按着ctrl 复制不要复制      一个一个的从工具箱里面拉出来(虽然麻烦点)
      否则写代码的时候会遇到很麻烦的事情

一笑见苍穹 发表于 2019-2-3 23:45:10

设置单选框默认值:
   属性 Group    改为: TRUE
       Dlg.cpp 中的OnInitDialog() 设置:
           CButton *cbutton = (CButton *)GetDlgItem(IDC_RADIO_ONE);      单选按钮基于Cbutton的
           cbutton->SetCheck(1);/
         0 把按钮设为未选中状态   1 把按钮设为选中状态
注意: Group 选择的单选按钮 和GetDlgItem 里面的ID要一致
页: [1]
查看完整版本: 【MFC入门文字教程】11-单选框(Radio Button)