對於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的使用,因此就此擱淺,哪位看官有可以實現的方法不妨告知小弟。