CListCtrl详解(转)

作为MFC中最常用的控件之一,CListCtrl功能的使用,修改及扩展是一个很深,很广泛的问题。在学习的过程中我尽量留下笔记,贴在这里和大家共享,欢迎大家挑错。

CListCtrl应用在作表格上最多,所以一般研究的功能都是Report view。
今天先说一下在Report下如何选中一行的一列。
CListCtrl一个很不好的默认表现就是只能选中一行,想选中其中一列,就得写不少程序。如果你遇到这个问题想找一个现成的解决方法,你可以下载下面的小程序包。
同时这个控件支持CheckBox。用户可以加入其它子定义的类,如按钮,位图。只需要写两三个函数就可以显示了。
点击下载该文件


效果大概如下图:

此主题相关图片如下:
按此在新窗口浏览图片

这里选种的颜色是系统默认的颜色,你可以把他该成任何喜欢的颜色。
使用这个控件的方法很简单。把文件包中的ListReport.h,ListReport.cpp,ListItem和ListItem.cpp加到你的项目中,然后在你的Dialog或者FormView里加上想要用的List Control。在class wizard里给list control加控制变量,variable type里就会有CListCtrl和CListReport两个选后者,然后把List Control的Proprty中View设成Report,然后选Owner draw fixed。就可以了。

在你的主程序中用下面的方法调用: 假设变量名叫m_listDemo
CReportCtrl m_listDemo

在header中加一列:     m_listDemo.AddColumn("Column 0", 0);   //第一个参数是列的文字,第二个参数是列号。
在header中加一列,并指定其宽度为200:    m_listDemo.AddColumn("Column 0", 0, 200);

在第0行第0列加Text "Row 0, Col 000",红色字体,粗体字    
m_listDemo.AddItem(0, 0, "Row 0, Col 000", CListItemText::GenerateProperty(true, RGB(255,  0,  0)))
字太长的时候item会显示成...(如图)。
在第0行第1列加Text "Row 0, Col 100",绿色字体,非粗体字    
    m_listDemo.AddItem(0, 1, "Row 0, Col 100", CListItemText::GenerateProperty(false, RGB(0, 255,  0)));
在第0行第2列加Check Box,初始状态为选中。  
    m_listDemo.AddItem(0, 2, "1", CListItemCheckBox::GenerateProperty());

制作的原理大概就是在鼠标左键按下的时候记下鼠标的位置,重载DrawItem函数,根据鼠标位置决定文字的背景颜色。程序应该很好懂,有什么问题欢迎大家指正。

以后我会不断更新本文,增加其它CListCtrl的功能。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值