首页 > 代码库 > 【VC编程技巧】控件?4.4ListBox控件(打造带有复选框的ListBox)
【VC编程技巧】控件?4.4ListBox控件(打造带有复选框的ListBox)
4.4ListBox控件(打造带有复选框的ListBox)
下面通过两种方式构建复选框ListBox
1.对话框中插入ListBox控件(IDC_LIST1,IDC_LIST2),如下设置属性
图1
- 方式一:
2.对ListBox控件(IDC_LIST1)关联控件变量m_checkListBox1,将控件变量类型CListBox -> CCheckListBox(需要手动完成)。
//修改控件变量类型:CListBox -> CCheckListBox CCheckListBox m_checkListBox1;
- 方式二:
2.从MFC类CCheckListBox中继承出类CCheckListBoxEx,定义其对象m_checkListBox2;通过m_checkListBox2.SubclassDlgItem(IDC_LIST2, this);子类化ListBox控件(IDC_LIST2)
ListBox控件父窗口头文件中
//定义自定义类CCheckListBoxEx的类对象 CCheckListBoxEx m_checkListBox2;
初始化函数OnInitDialog中
// TODO: 在此添加额外的初始化代码 m_checkListBox2.SubclassDlgItem(IDC_LIST2, this);
3.以上带有复选框的ListBox就完成了;但是此时ListBox控件中复选框和项目结合不紧密。
选中复选框 == 选中了复选框所在的项目
选中项目 !== 选中了项目复选框
现对于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); } }
4.效果图:
图2
【VC编程技巧】控件?4.4ListBox控件(打造带有复选框的ListBox)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。