zoukankan      html  css  js  c++  java
  • VC++单选按钮控件(Ridio Button)的使用(转载)

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

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

    关键是选上,“默认”只要放在OnInitDialog()即可。设定Radio1为默认选中,以下提供3种方法:

    第一种 (推荐):

    1.1设定默认值

    OnInitDialog()函数中,添加如下代码:

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

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

    1.2 获取选中状态

    在具体编写使用函数式,想获取当前哪个单选按钮被选中,只需在函数中添加如下代码:

    ((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了。

    2.1 设定默认值

    OnInitDialog()函数中,添加如下代码:

    m_ctrlRadio1.SetCheck(TRUE);

    2.2 获取选中状态

    功能函数处添加如下代码:

    int selecStatus=m_ctrlRadio1.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被选上。分好了组就 分别使用它们吧。

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

    一、对单选按钮进行分组:

    每组的第一个单选按钮设置属性: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) m_Radio1 = 0;    //初始时第一个单选按钮被选中 m_Radio4 = 0;    //初始时第四个单选按钮被选中 //}}AFX_DATA_INIT

    转自:http://www.cnblogs.com/adamite/archive/2008/12/21/1359210.html

  • 相关阅读:
    pgspider sqlite mysql docker 镜像
    pgspider docker 镜像
    pgspider基于pg 的高性能数据可视化sql 集群引擎
    diesel rust orm 框架试用
    golang 条件编译
    Performance Profiling Zeebe
    bazel 学习一 简单java 项目运行
    一个好用node http keeplive agnet
    gox 简单灵活的golang 跨平台编译工具
    mailhog 作为smtp server mock工具
  • 原文地址:https://www.cnblogs.com/vranger/p/3079762.html
Copyright © 2011-2022 走看看