用MFC拖得界面如下:对话框A、B 。
在A对话框两个button,分别是下一步、取消
在B对话框上有如下控件:三个radio button分别代表安装、修复、卸载.
                      两个button,分别是下一步、取消。
在A对话框两个button,分别是下一步、取消。
点击A中下一步->B下一步-〉C/D/E(根据radiobutton 值去跳转)。
      A对话框在B之前,操作如下:查询注册表的信息,判断当前安装的方式。如果当前为为安装状态,点击A上的下一步按钮,会出现B对话框,默认选中代表“安装”的radio button,禁用修复、卸载这两个radio button.
                      如果注册表信息反应当前已经安装过,此时点击A上的下一步按钮,会出现B对话框,默认选中代表“修复”的radio button,禁用“安装”的radio button。我的做法是把三个radio button 设置成一组,用int型变量绑定,然后通过设置这个值来设置当前哪个为默认值。默认值处理部分放在B对话框的构造器中,我没能做到禁用radio button,使用的是((CButton *)GetDlgItem(IDC_RADIO2))->ShowWindow(false);我把这部分代码放到B对话框的OnInitDialog()中。在B 对话框的下一步按钮的click 事件中,添加条件语句,如果满足当前对应的radio button 被选中,且注册表信息正确,则跳到相应的对话框去。问题:1.请问禁用掉radio button如何实现?我目前是用的((CButton *)GetDlgItem(IDC_RADIO2))->ShowWindow(false);这部分放在对话框OnInitDialog 中。这样功能实现了,可是相当难看,特别是当未安装时,上面只有一个radio button,太空荡了。
2.B对话框中的下一步按钮的click 事件,对radio button 的选择好像并不起作用,是不是我的思路有问题,肯请大侠们指点!多谢!

解决方案 »

  1.   

    请问禁用掉radio button如何实现?用((CButton *)GetDlgItem(IDC_RADIO2))->EnableWindow(false)就可以了
      

  2.   

    这个不是禁用,只是把这个控件给隐藏起来了,在B对话框中看不见而已,这样的话,B对话框很空荡,看着很怪异。我想把它禁用,是指灰掉,不可选。请问有没有这样的方法,我找了一下,,CButton是没有的~~
      

  3.   

    在Radio Button 的属性中有个disable,我就是想实现这样的效果,不可用,但是它还是能够显示在对话框中,难道没的吗?
      

  4.   

    :1.请问禁用掉radio button如何实现?我目前是用的((CButton *)GetDlgItem(IDC_RADIO2))->ShowWindow(false);这部分放在对话框OnInitDialog 中。这样功能实现了,可是相当难看,特别是当未安装时,上面只有一个radio button,太空荡了。
    ------------------------------------------
    GetDlgItem(IDC_RADIO2)->EnableWindow(FALSE);2.B对话框中的下一步按钮的click 事件,对radio button 的选择好像并不起作用,是不是我的思路有问题,肯请大侠们指点!
    --------------------------------------------------
    CheckDlgButton(IDC_RADIO2, 1);
      

  5.   

    按钮灰掉用这个:((CButton*)GetDlgItem(IDC_RADIO2))->EnableWindow(FALSE);
      

  6.   

    EnableWindow 是让整个按钮灰掉不能点击, 他在对话框里面还显示啊
      

  7.   

    感谢各位好心大侠的帮助,问题落地。特别感谢Eleven。第二个问题,要使用GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton)来实现,是我没说清楚,要获取当前哪个radio button被选中。
    结贴了。