Windows编程基础–第11节 MFC之列表控件CListCtrl
在MFC程序中列表控件也是使用很频繁的控件,例如windows的资源管理器就可以用列表控件来实现,如下图:
                
列表控件具有以下四种视图:
- 大图标
- 小图标
- 列表
- 详细信息
1. 新建项目
新建一个基于对话框项目“day13”,布置界面如下,从左侧“工具箱”拖动一个List control到界面,再加上两个按钮及Combo Box,如图:
                
| 控件名 | 控件ID | 
|---|---|
| List control | IDC_LIST_VIEW | 
| Combo Box | IDC_COMBO2 | 
| 添加行 | IDC_BUTTON_ADD | 
| 删除行 | IDC_BUTTON_DEL | 
2. 添加列表控件变量
单击选中列表控件,右击选择->“添加变量”,添加变量名为m_list,如下:
                
3. 初始化列表控件
切换到对话框的初始化函数(OnInitDialog()),我们来给列表控件增加三列,
                
| 1 | m_list.ModifyStyle(LVS_TYPEMASK, LVS_REPORT); //设置列表控件样式为详细信息 | 
4. 添加列表图标
自行下载或者制作两个bmp图标,分别为1616,和3232;将图标复制到项目的res资源目录中,
                
切换到资源视图,右击添加资源,导入我们准备好的图标,如图所示:
                
导入好之后我们可以更改位图ID,如图所示:
                
接下来我们在day13.h的头文件中添加两个成员变量:
| 1 | CImageList m_ilLarge; | 
分别来对应3232,和1616;
然后我们再切换到初始化函数中,添加如下四行代码:
| 1 | m_ilLarge.Create(IDB_BITMAP_32, 32, 1,RGB(255,0,255)); | 
5. 实现添加行按钮函数
双击“添加行”按钮,编辑按钮点击方法:
| 1 | void Cday13Dlg::OnBnClickedButtonAdd() | 
注意,只有添加第一行第一个元素是才是InsertItem,之后的添加都应该是SetItemText,防止出错;
5. 实现删除行按钮函数
双击“删除行”按钮,编辑按钮点击方法:
| 1 | void Cday13Dlg::OnBnClickedButtonDel() | 
这样就实现了删除行的按钮,并且所有被选中的行都会被删除,按住Ctrl选中多行,点击删除,所有被选中的行都会被删除;
6. 实现列表控件的样式切换
切换到资源视图,单击Combo Box,打开属性->data;输入:
大图标;小图标;详细信息;列表;
如图:
                
继续编辑Combo Box的属性,选择“控件事件”,添加CBN_Selchange事件,如图:
                
编辑Combo Box的OnCbnSelchangeCombo2处理函数:
| 1 | void Cday13Dlg::OnCbnSelchangeCombo2() | 
很明显,先用GetDlgItem获取Combo Box的对象,然后判断Combo Box的选中的是哪一项,记录选中项的列表类型,最后设置列表属性;
最后效果图:
大图标:
                
小图标:
                
列表:
                
详细信息:
                
