GetCheck()工作检查按钮,但没有单选按钮?

时间:2013-01-11 20:38:54

标签: c++ visual-studio-2010 mfc

我刚学习在Visual Studio 2010中使用MFC制作对话框。

从我所看到的on msdn's website,GetCheck()函数对于复选框和单选按钮应该是相同的。

基本上我在两个滑块旁边有两个单选按钮。如果一个单选按钮打开,则该滑块被禁用,如果另一个单选按钮打开,则另一个滑块被禁用。

当我将单选按钮切换为复选框时,这就是我使用的代码:

void Cstring_copyierDlg::OnBnClickedSld1chk()
{

    UINT nCheck = m_slide1check.GetCheck();

    if(nCheck == BST_CHECKED){
        m_slider.EnableWindow(FALSE);
    }
    else{
        m_slider.EnableWindow(TRUE);
    }

}

void Cstring_copyierDlg::OnBnClickedSld2chk()
{
    UINT nCheck = m_slide2check.GetCheck();

    if(nCheck == BST_CHECKED){
        m_slider2.EnableWindow(FALSE);
    }
    else{
        m_slider2.EnableWindow(TRUE);
    }

}

此代码工作正常。但是,当我关闭单选按钮的复选框时,这是我使用的代码:

void Cstring_copyierDlg::OnBnClickedRad1()
{

    UINT nCheck = m_radio1.GetCheck();

    if(nCheck == BST_CHECKED){
        m_slider.EnableWindow(FALSE);
    }
    else{
        m_slider.EnableWindow(TRUE);
    }

}

void Cstring_copyierDlg::OnBnClickedRad2()
{
    UINT nCheck = m_radio2.GetCheck();

    if(nCheck == BST_CHECKED){
        m_slider2.EnableWindow(FALSE);
    }
    else{
        m_slider2.EnableWindow(TRUE);
    }

}

但是第二段代码在编译时返回以下错误:

error C2228: left of '.GetCheck' must have class/struct/union

是什么给出了?

1 个答案:

答案 0 :(得分:0)

您在添加变量向导中为DDX选择了错误的变量类型。你应该在那里选择控件类型。

要手动更改变量类型,请将m_radio1的类型替换为CButton,并在DoDataExchange中将DDX_Radio替换为DDX_Control。