MFC RadioButton用法详解

基础介绍:

radio button通常都是成组使用的,在一组里面是互斥的。

分组的原则是:

1、首先将RadioButton控件定好Tab顺序,具体方法:

工具栏“格式”—>“Tab键顺序”选项选中(或者按键
Ctrl + D
),

然后按照想要设定的次序,依次点击对话框上面的RadioButton按钮,Tab键顺序设定完成。

2、按照上面的Tab键顺序进行分组,然后设定每组第一个RadioButton的Group属性为TRUE(其他为FALSE),分组完成,

即从当前设置Group属性为TRUE的RadioButton开始直到碰到下一个选上Group属性的RadioButton的前一个RadioButton为一个组,

也就是说系统只要检测到Group属性为TRUE,就认为是一个新的分组。

3、为单选控件定义Control变量或Value变量,每组只能定义一个,通过设定值来确定哪一个RadioButton被选中,其中-1表示该组均不被选中,0表示该组第一个RadioButton被选中,1表示选中第二个,2表示选中第三个……)。

单选事件:

方法一:最简单最常用

就是在OnInitDialog()中设置RadioButton的初始选中状态,因为默认都处于未选中状态

((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE); //选上
((CButton *)GetDlgItem(IDC_RADIO2))->SetCheck(FALSE);//不选上

然后结合RadioButton的点击事件来改变变量值,或者动态判断RadioButton是否被选中

if (((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck())

方法二:比较复杂

为单选控件定义Control(即CButton)变量或Value(即BOOL)变量,每组只能定义一个,通过设定值来确定哪一个RadioButton被选中,其中-1表示该组均不被选中,0表示该组第一个RadioButton被选中,1表示选中第二个,2表示选中第三个……)

如下图,共创建四组RadioButton,记着设定Tab键顺序以及为每组第一个RadioButton设置Group属性。初始化对话框为下图:

为该工程中的RadioButton设定下面若干变量:(为单选控件定义Control变量或Value变量,每组只能定义一个)

BOOL m_Radio1; //对应于组 1
1

BOOL m_Radio3; //对应于组 2
1

BOOL m_Radio7; //对应于组 3
1

BOOL m_Radio9; //对应于组 4
1

CButton m_RBtGroup1; //对应于组 1
1

CButton m_RBtGroup2; //对应于组 2
1

CButton m_RBtGroup3; //对应于组 3
1

CButton m_RBtGroup4; //对应于组 4
1

添加变量

RadioButtonInstanceDlg.h文件中:

代码部分如下

class CRadioButtonInstanceDlg : public CDialogEx

{

// 构造

public:

CRadioButtonInstanceDlg(CWnd* pParent = NULL); // 标准构造函数

// 对话框数据

enum { IDD = IDD_RADIOBUTTONINSTANCE_DIALOG };

protected:

virtual void DoDataExchange(CDataExchange* pDX);       //
DDX/DDV 支持

// 实现

protected:

HICON m_hIcon;

// 生成的消息映射函数

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

BOOL
m_Radio1;

BOOL m_Radio3;

BOOL m_Radio7;

BOOL m_Radio9;

CButton m_RBtGroup1;

CButton m_RBtGroup2;

CButton m_RBtGroup3;

CButton m_RBtGroup4;

};

RadioButtonInstanceDlg.cpp文件中:

void CRadioButtonInstanceDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

DDX_Radio(pDX,
IDC_RADIO1, m_Radio1);

DDX_Radio(pDX, IDC_RADIO3, m_Radio3);

DDX_Radio(pDX, IDC_RADIO7, m_Radio7);

DDX_Radio(pDX, IDC_RADIO9, m_Radio9);

DDX_Control(pDX, IDC_RADIO1, m_RBtGroup1);

DDX_Control(pDX, IDC_RADIO3, m_RBtGroup2);

DDX_Control(pDX, IDC_RADIO7, m_RBtGroup3);

DDX_Control(pDX, IDC_RADIO9, m_RBtGroup4);

}

时间: 2024-10-07 15:07:55

MFC RadioButton用法详解的相关文章

js的offsetParent属性用法详解

js的offsetParent属性用法详解:此属性是javascript中较为常用的属性,对于它的良好掌握也是非常有必要的,下面就通过代码实例介绍一下它的用法,希望能够给需要的朋友带来一定的帮助.一.基本介绍:此属性可以返回距离指定元素最近的采用定位(position属性值为fixed.relative或者absolute)父级元素,如果父级元素中没有采用定位的元素,则返回body对象的引用.语法结构: obj.offsetParent 二.代码实例: <!DOCTYPE html> <

python处理word文件:win32com用法详解

目标:用python处理doc文件 方法:引入win32com模块 ************************************************************************** 一.安装 ************************************************************************** 首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了...) 下载地址:http

jQuery 事件用法详解

jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jquery 之所以成为最受欢迎的前端库,很大一部分是得益于它的事件具有良好的语义,优秀的兼容性,并且便于管理和扩展. 在这里我会介绍 jquery 事件的一些比较基础的用法. 实现原理 jquery 事件脱胎于浏览器的 addEventListener (W3) 和 attac

(转)ProgressDialog用法详解

转载自: ProgressDialog用法详解 ProgressDialog的基本用法 ProgressDialog为进度对话框.android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西. 首先看看progressDialog里面的方法 setProgressStyle:设置进度条风格,风格为圆形,旋转的.  setTitlt:设置标题  setMessage:设置提示信息:  setIcon:设置标题图标:  setIndeter

BigDecimal用法详解(转)

BigDecimal用法详解    http://www.cnblogs.com/linjiqin/p/3413894.html 一.简介Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal.BigDecimal所创建的是对象

mapminmax的用法详解 _MATLAB

============外一篇 有关mapminmax的用法详解 by faruto==================================转自:http://www.ilovematlab.cn/thread-47224-1-1.html几个要说明的函数接口:[Y,PS] = mapminmax(X)[Y,PS] = mapminmax(X,FP)Y = mapminmax('apply',X,PS)X = mapminmax('reverse',Y,PS) 用实例来讲解,测试数据

Nmap用法详解

nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息.nmap支持很多扫描技术,例如:UDP.TCP connect().TCP SYN(半开扫描).ftp代理(bounce攻击).反向标志.ICMP.FIN.ACK扫描.圣诞树(Xmas Tree).SYN扫描和null扫描.从扫描类型一节可以得到细节.nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫

CSS中伪类及伪元素用法详解

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上. 写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hover.:

C# ListView用法详解

一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格线.(默认为false)提示:只有在Details视图该属性才有意义. (3)AllowColumnReorder:设置是否可拖动列标头来对改变列的顺序.(默认为false)提示:只有在Details视图该属性才有意义. (4)View:获取或设置项在控件中的显示方式,包括D