2013-01-11 208 views
0

我只是學習製作對話框與MFC在Visual Studio 2010GetCheck()爲檢查按鈕工作,但不是單選按鈕?

從我所看到的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

'm_radio1'是什麼類型? – chris

+0

我不太確定它是什麼類型,但要創建m_radio1我按Ctrl +雙擊單選按鈕並將「變量名稱:」設置爲m_radio1。 Idk什麼類型,使默認情況下,但。 – xcdemon05

+0

Visual Studio帶回了MFC類嚮導。如果按[Ctrl] + [Shift] + X,它會彈出一個包含所需信息的對話框。從_Class name_組合框中選擇對話框/視圖類,然後單擊_Member Variables_選項卡。這應該可以幫助你識別'm_radio1'的類型。與你的問題無關,我不建議使用MFC啓動Windows開發。通過自動生成的代碼涉水無法提供您所需的洞察力。實質上,如果你從MFC開始,你將跳過一個強制性的學習體驗:普通的香草Win32 API編程。 – IInspectable

回答

0

您在添加變量嚮導中爲DDX選擇了錯誤的變量類型。你應該選擇那裏的控制類型。

要手動更改變量類型,請將m_radio1的類型替換爲CButton,並用DoDataExchange中的DDX_Control替換DDX_Radio。