0

Visual Studio 2010 で MFC を使用してダイアログ ボックスを作成する方法を学んでいます。

msdn の Web サイトで確認できることから、GetCheck() 関数はチェック ボックスとラジオ ボタンの両方で同じように機能するはずです。

基本的に、2 つのスライダーの横に 2 つのラジオ ボタンがあります。一方のラジオ ボタンがオンの場合、そのスライダーは無効になり、もう一方のラジオ ボタンがオンの場合、もう一方のスライダーは無効になります。

チェックボックス用のラジオボタンを切り替えたとき、これは私が使用したコードでした:

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);
    }

}

ただし、コードの 2 番目の部分は、コンパイル時に次のエラーを返します。

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

何を与える?

4

1 に答える 1

0

変数の追加ウィザードで、DDX に対して間違った変数タイプを選択しています。そこでコントロールの種類を選択する必要があります。

変数の型を手動で変更するには、m_radio1 の型を CButton に置き換え、DDX_Radio を DoDataExchange の DDX_Control に置き換えます。

于 2013-01-11T20:43:55.547 に答える