vc60中有多个复选框,但是其中一个选中后不能取消选中,且...

2025年05月05日 19:23
有1个网友回答
网友(1):

应该不会没有任何代码迹象,代码肯定是有的。

我觉得可以这样实现,例如有IDC_CHECK1、IDC_CHECK2...IDC_CHECK5 五个复选框。
当选中IDC_CHECK1后,不能取消选中,并且其他复选框同时选中。

每个复选框都关联同一个BOOL变量:
DDX_Check(pDX, IDC_CHECK1, m_bCheck);
DDX_Check(pDX, IDC_CHECK2, m_bCheck);
DDX_Check(pDX, IDC_CHECK3, m_bCheck);
DDX_Check(pDX, IDC_CHECK4, m_bCheck);
DDX_Check(pDX, IDC_CHECK5, m_bCheck);
IDC_CHECK1再关联一个CButton型control变量:
DDX_Control(pDX, IDC_CHECK1, m_ctrlCheck1);

然后在IDC_CHECK1的单击事件中添加代码:
void CT8Dlg::OnCheck1()
{
if(!m_bCheck)
m_bCheck = m_ctrlCheck1.GetCheck();
UpdateData(FALSE);
}

这样就可以实现你说的功能了。

如果真的看不见其他代码的话,那应该是复选框控件使用了其他第三方的类,实现代码在类中。