可设置单元格颜色的ClistCtrl类
作者/smiletiger
下载源代码
一、说明:
CListCtrl控件简单易用,美中不足的是不能设置单元格的颜色,作者试着扩展了CListCtrl类,提供了一个可设置单元格颜色的函数,
SetItemColor(int nItem, int nSubItem, COLORREF clrText, COLORREF clrBkgnd).
本类参考自 vckbase “列表控件排序功能的实现”(作者/王骏 ) ,在使用本类前,请先参考该文。
示例程序运行效果如图一:
图一 示例程序运行效果图
二、原理
在ListCtrl绘制单元格时将发送NM_CUSTOMDRAW消息给父窗口,只要处理该消息,我们就可以定制自己想要的颜色。具体使用方法请参考源程序中的 函数:
void CSortListCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)三、使用方法
//设置整行选择和带表格线模式 m_MyListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); //设置列头 m_MyListCtrl.SetHeadings(_T("ID,100;Name,100;BirthDate,100")); //添加项目 m_MyListCtrl.AddItem(_T("1"),_T("栾义明"),_T("1979-07-25")); m_MyListCtrl.AddItem(_T("2"),_T("张伟"),_T("1982-03-26")); //设置单元格颜色。 m_MyListCtrl.SetItemColor(0,1,RGB(255,0,0),RGB(0,255,0));四、参考资料 列表控件排序功能的实现 XListCtrl - A custom-draw list control with subitem formatting