下面通过两种方式构建复选框ListBox
图1
//修改控件变量类型:CListBox -> CCheckListBox CCheckListBox m_checkListBox1;
ListBox控件父窗口头文件中
//定义自定义类CCheckListBoxEx的类对象 CCheckListBoxEx m_checkListBox2;
// TODO: 在此添加额外的初始化代码 m_checkListBox2.SubclassDlgItem(IDC_LIST2, this);
选中复选框 == 选中了复选框所在的项目
选中项目 !== 选中了项目复选框
现对于ListBox控件(IDC_LIST2)做了进一步优化;使得可以
选中复选框 == 选中了复选框所在的项目
选中项目 == 选中了项目复选框
优化源码:
消息映射
ON_LBN_SELCHANGE( IDC_LIST2, OnSelectItemChance )
afx_msg void OnSelectItemChance();
//当Item发生改变时系统调用此函数
void CCheckListBoxDlg::OnSelectItemChance()
{
//ListBox中当前Item的索引取得
int nCurIndex = m_checkListBox2.GetCurSel();
//当前Item中复选框状态取得(选中,未选中)
int nRet = m_checkListBox2.GetCheck(nCurIndex);
if (nRet == BST_CHECKED)
{
//选中时,状态改为非选中
m_checkListBox2.SetCheck(nCurIndex, 0);
}
else
{
//未选中时,状态改为选中
m_checkListBox2.SetCheck(nCurIndex, 1);
}
}图2
【VC编程技巧】控件?4.4ListBox控件(打造带有复选框的ListBox)
原文:http://blog.csdn.net/chen_jint/article/details/40865277