在我的对话框中加入了单选按钮(radio button)和复选按钮(check box),
出现如下问题:
1,单选按钮无法设置对话框变量(我用class wizard 定义变量时,在Contrl IDs列中根本没看到在对话框中加入的控件ID:IDC_RADIO1)
2,知道单选按钮和复选按钮的控件ID,怎样在代码中改变他们状态(被选择或未被选择),比如我想清除所有单选按钮的选择状态或将某一按钮置为被选择状态.
3,单选按钮怎样分组?

解决方案 »

  1.   

    1、给你的单选扭添加GROUP属性
    2、一组内的单选扭对应的int变量是从0到size-1(size为组内的按扭的个数),通过设置该变量,然后UpdateData(FALSE),就可以了;复选扭可以对应BOOL变量,你也可以直接修改为其映射的变量然后UpdateData(FALSE)
    3、一系列单选扭,根据添加顺序,在你设置第N,N-1个GROUP属性之间的所有按扭都属于第N组
      

  2.   

    GetDlgItem(IDC_RADIO1)->SetCheck(TRUE)
      

  3.   

    谢谢subtop 和windyloft的指导!
    to subtop:
    "一组内的单选扭对应的int变量是从0到size-1(size为组内的按扭的个数),"
    "一系列单选扭,根据添加顺序,在你设置第N,N-1个GROUP属性之间的所有按扭都属于第N组"
    上面两句难理解,能进一步说明或写点代码出来吗?谢谢啦!!!那如果没有定义变量(只知道起ID)怎样判断按钮是处于选择状态还是清除状态呢?
      

  4.   

    to windyloft:
    在使用如下语句时出错
    GetDlgItem(IDC_RADIO3)->SetCheck(TRUE);
    error C2039: 'SetCheck' : is not a member of 'CWnd'
      

  5.   

    比如我在对话框上先后添加了5个radio button(a、b、c、d、e)
    之后我设置了a的GROUP属性:
    那么你就可以为a映射一个int变量m_nOpt;
    m_nOpt为0时对应你选了A,1-》B,2-》C,3—》D,4-》E。
    如果我又为c设置了GROUP属性:
    那么A、B为一组,C、D、E为一组。
    这时你可以为A和C映射变量。
      

  6.   

    CButton::GetCheck 
    int GetCheck( ) const;Return ValueThe return value from a button control created with the BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON, or BS_3STATE style is one of the following values:
    CButton::SetCheck 
    void SetCheck( int nCheck );ParametersnCheckSpecifies the check state. This parameter can be one of the following:Value Meaning 
    0 Set the button state to unchecked. 
    1 Set the button state to checked. 
    2 Set the button state to indeterminate. This value can be used only if the button has the BS_3STATE or BS_AUTO3STATE style. 
    ResSets or resets the check state of a radio button or check box. This member function has no effect on a pushbutton.
      

  7.   

    注意CButton派生自CWnd,
    上面的成员函数是CButton的不是CWnd的,你可以这样:
    ((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(1);
      

  8.   

    ((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(1);
      

  9.   

    基本上明白了,谢谢!!如风歌所述::
    比如我在对话框上先后添加了5个radio button(a、b、c、d、e)
    之后我设置了a的GROUP属性:
    那么你就可以为a映射一个int变量m_nOpt;
    m_nOpt为0时对应你选了A,1-》B,2-》C,3—》D,4-》E。
    如果我又为c设置了GROUP属性:
    那么A、B为一组,C、D、E为一组。
    这时你可以为A和C映射变量。如果我已经作了多组radio button 此时我想在第一组中再加一个上去的话(由于加上去的那个在最后面)岂不是要改动很多地方(不仅位置需要调整,而且文字意义甚至代码也要改变)?请问风歌:
    如果发生以上情况,有没有更好的方法调整.