ListCtrl控件 列表中显示颜色的实现

对于ListCtrl控件表格中数据颜色的问题,纠结了很久,基类CListCtrl是没有设置列表中颜色的函数的。在网上找了一些源代码案例来学习,从其中找到了一个比较好的实现方法。

1.利用ListCtrl派生类实现列表颜色设置

最开始是这篇文章:http://www.vckbase.com/document/viewdoc/?id=891    方法还是不错的,但恕我无能,派生类的对象不能实现基类的一些函数功能。解决不了这个问题,果断找其他方法

下面这个,这是在VC知识库中找到的,链接:http://www.vckbase.com/document/viewdoc/?id=1855   感谢这位大神,让我这菜鸟得以解决问题,也不影响基类方法的使用。而且功能比较全,实现了设置各种颜色的方法,这正是我需要的,对于原作者只能膜拜!

使用方法如下:

把HeaderCtrlCl.h, HeaderCtrlCl.cpp, ListCtrlCl.h, ListCtrlCl.cpp添加到你的工程中,在拖一个CListCtrl控件到对话框上,添加成员变量,然后在头文件中#include “ListCtrlCl.h”,把刚添加的成员变量类型改为 CListCtrlCl ,函数使用如下

m_ListCtrl.SetColColor(0,RGB(10,150,20)); //设置列背景色
m_ListCtrl.SetColColor(2,RGB(30,100,90)); //设置列背景色
m_ListCtrl.SetBkColor(RGB(50,10,10));        //设置背景色
m_ListCtrl.SetItemColor(1,1,RGB(100,100,10)); //设置指定单元背景色
m_ListCtrl.SetRowHeigt(25);               //设置行高度
m_ListCtrl.SetHeaderHeight(1.5);          //设置头部高度
m_ListCtrl.SetHeaderFontHW(16,0);   //设置头部字体高度,和宽度,0表示缺省,自适应 
m_ListCtrl.SetHeaderTextColor(RGB(255,200,100)); //设置头部字体颜色
m_ListCtrl.SetTextColor(RGB(0,255,255));  //设置文本颜色
m_ListCtrl.SetHeaderBKColor(100,255,100,8); //设置头部背景色
m_ListCtrl.SetFontHW(15,0);               //设置字体高度,和宽度,0表示缺省宽度
m_ListCtrl.SetColTextColor(2,RGB(255,255,100)); //设置列文本颜色
m_ListCtrl.SetItemTextColor(3,1,RGB(255,0,0));  //设置单元格字体颜色

2.利用Custom Draw

这是两篇比较好的文章

http://dqifa.blog.163.com/blog/static/49258365200822014152284/    对结构和参数讲得比较详细

http://laokaddk.blog.51cto.com/368606/203390/    对Custom Draw的使用讲的很详细

但上面只讲了实现某列和某行的颜色设置,如果想要是列表中具体某一项颜色变化呢?要怎么实现呢,由于时间关系,我没深究Custom Draw的使用,因此就此搁浅,哪位看官有可以实现的方法不妨告知小弟。

原文地址:https://www.cnblogs.com/Romi/p/2363922.html