MFC ListBox实现CheckBox功能(附带复选框)

1、首先在窗口上拖放一个ListBox控件,假设其资源ID为IDC_LIST1;

     如果界面有多个ListBox,可以拖动多个该控件到界面,如何设其资源ID。

2、如上所述修改该ListBox控件的属性(LBS_OWNERDRAWFIXED | LBS_HASSTRINGS);

    实现方式:成功的关键是要修改ListBox控件的两处属性,分别是Owner draw设置为Fixed(LBS_OWNERDRAWFIXED),Has strings设置为True              (LBS_HASSTRINGS),否则不成功,运行时报错。界面上的ListBox控件需要实现复选框功能,都需要设置上面所说的属性。

3,对ListBox控件添加一个CCheckListBox型变量m_CheckList

   实现方法:定义CCheckListBox对象,在窗口类的头文件里;

      // XXXDlg.h 增加
                                  CCheckListBox m_CheckList;  

                                  CCheckListBox m_CheckList1;  

4,在OnInitDialog中添加

   需要注意的是:如果界面就只有一个ListBox需要实现复选框功能,就不需要增加代码,否则会出现报错弹出框。系统默认把第一个ListBox对象变量和资源ID
               绑定上了。如果界面上有多个ListBox需要实现复选框功能,其他的几个ListBox需要进行资源ID绑定。
             m_checkList.SubclassDlgItem(IDC_LIST, this); //初始化--------增加这句话会出错,删除该语句
             m_checkList1.SubclassDlgItem(IDC_LIST1, this); //初始化
             m_checkList2.SubclassDlgItem(IDC_LIST2, this); //初始化
   上面语句的初始功能,不能放在:On***事件函数中,否则会报错。
5.给ListBox控件增加数据内容,可以把下面语句放在OnInitDialog方法中,也可以放在:On***事件函数中。
    m_CheckList.AddString("aaaaaaaaaaa");
    m_CheckList.AddString("bbbbbbbbbbbbb");
6.设置复选框选中状态方法:
   m_CheckList.SetCheck(index,1); //0表示没有选中
7.获取复选框状态函数:
   m_CheckList.GetCheck(index);  //判断返回值,返回值为1表示选中状态。
 
 
 
 
 

 


 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页