【发布时间】:2013-01-11 20:38:54
【问题描述】:
我刚刚学习如何在 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
什么给了?
【问题讨论】:
-
m_radio1是什么类型? -
我不太确定它是什么类型,但要创建 m_radio1,我 Ctrl+双击单选按钮并将“变量名称:”设置为 m_radio1。我知道默认情况下是什么类型。
-
Visual Studio 带回了 MFC 类向导。如果您按 [Ctrl]+[Shift]+X,它会弹出一个对话框,其中包含您需要的所有信息。从 Class name 组合框中选择 Dialog/View 类,然后单击 Member Variables 选项卡。这应该可以帮助您识别
m_radio1的类型。与您的问题无关,我不建议使用 MFC 开始 Windows 开发。浏览自动生成的代码不会提供您需要的洞察力。从本质上讲,如果您从 MFC 开始,您将跳过强制性的学习体验:普通的 Win32 API 编程。
标签: c++ visual-studio-2010 mfc