当前位置: 首页 > 编程技术 > 正文

CListCtrl类使用总结

    ListCtrl是MFC提供的一个列表类,ListCtrl的效果类似于任务管理器里面的进程列表,结合自己的学习,总结并整理了一下CListCtrl常用的一些效果,便于自己以后忘记的时候可以找出来翻翻,也希望能够帮助到像我一样的学习MFC的新手

在MFC的控件栏中,列表控件默认不是报告类型的,如果我们需要的列表控件的样式是类似于任务管理器样式的,

那么我们需要打开控件的属性设置->样式->选择报告
设置列表控件

1.单击列表控件选中整行,

效果如下:

点击列表控件选中整行

要实现这样的效果,只需要在MFC类的OnInitDialog()函数下面增加下面的代码:

       //IDC_LIST_ProcessList是列表控件的ID,视情况不同而不同
	CListCtrl *pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST_ProcessList);
        //特别注意要加上LVS_EX_FULLROWSELECT,否则不能实现点击整行选中的效果
	pListCtrl->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

2.增加列,

比如上图分为了5列,每列都有文字,要在列表控件中插入列,在OnInitDialog()中添加如下代码:

	pListCtrl->InsertColumn(0,"PID",LVCFMT_LEFT,50);
	pListCtrl->InsertColumn(1,"进程名称", LVCFMT_CENTER,80);
	pListCtrl->InsertColumn(2,"进程文件路径",LVCFMT_CENTER,200);
	pListCtrl->InsertColumn(3,"隐藏状态",LVCFMT_CENTER,70);
	pListCtrl->InsertColumn(4,"保护状态",LVCFMT_CENTER,70);
	pListCtrl->InsertColumn(5,"文件状态",LVCFMT_CENTER,70);

3.添加行,并给每行添加数据

同样是在OnInitDialog()中添加如下代码:

	pListCtrl->InsertItem(0,""); // 增加了第0行
	pListCtrl->SetItemText(0,0,"0"); //给第0行第0列设置文本内容为 0
	pListCtrl->SetItemText(0,1,"0");//给第0行第1列设置文本内容为 0
	pListCtrl->SetItemText(0,2,"0");
	pListCtrl->SetItemText(0,3,"0");
	pListCtrl->SetItemText(0,4,"0");
	pListCtrl->SetItemText(0,5,"0");

4.得到选中的行的行数:

如果要得到选中的那样的行数,需要添加一个NM_CLICK的消息处理函数,在消息函数里面添加如下代码:

CListCtrl *pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST_ProcessList);
int nItem = pListCtrl->GetNextItem( -1, LVNI_ALL | LVNI_SELECTED);
//nItem就是选中的行数。

5.得到选中的行的文本:

	CString strText = m_ListContrl.GetItemText(nItem,0); // nItem是上面得到行数,0表示列数,返回值就是内容了

ListCtrl的基本用法就这么多了,如果其他的高级用法的话,大家可以参考下MSDN,MSDN上关于CListCtrl的内容还是比较多的



本文固定链接: http://kuaile.in/archives/1195 | 蒲公英的博客

该日志由 蒲公英 于2012年08月21日发表在 编程技术 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: CListCtrl类使用总结 | 蒲公英的博客
关键字: ,

CListCtrl类使用总结:等您坐沙发呢!

发表评论


You must enable javascript to see captcha here!

快捷键:Ctrl+Enter