修改一个完全颜色的CListCtrl类
2007-11-01 20:24:25 来源:WEB开发网由上述源代码可以看出,CColorListCtrl类给我们提供的可供填充的颜色数量十分有限,只有BLACK,BLUE,GREEN,CYAN,RED,MANGENTA,YELLOW,WHITE,DARKBLUE,DARKGREEN,BLUEGREEN,BROWN,PURPUR,OLIV,DARKGRAY,LIGHTGRAY,LIGHTBLUE,DARKWHITE,MIDDLEGRAY等几种,完全不能满足我们随时定制自己所需颜色的要求,因此我对这个类进行了一些修改,以使得能随心所欲的填充任何颜色。
对CColorListCtrl类修改的地方如下所示:
1、完全去掉color.h和color.cpp源文件,只把ColorListCtrl.h和ColorListCtrl.cpp源文件导入自己的工程中;
2、把ColorListCtrl.h头文件中的#include"color.h"去掉;
3、在类CMyLParam的定义和函数说明中进行如下修改:
源代码:
ITEM_COLOR *m_pBackColor;
ITEM_COLOR *m_pTextColor;
m_pBackColor=new ITEM_COLOR[column_count];
m_pTextColor=new ITEM_COLOR[column_count];
BOOL SetBackColor(ITEM_COLOR color, int iSub)
{
if (iSub<m_column_count) {
m_pBackColor[iSub] = color;
return TRUE;
} else return FALSE;
}
BOOL SetTextColor(ITEM_COLOR color, int iSub)
{
if (iSub<m_column_count) {
m_pTextColor[iSub] = color;
return TRUE;
} else return FALSE; }
COLORREF GetBackColor(int iSub)
{
if (iSub<m_column_count)
return GetColorRef(m_pBackColor[iSub]);
else
return GetColorRef(DEF_BACKGROUND);}
COLORREF GetTextColor(int iSub)
{
if (iSub<m_column_count)
return GetColorRef(m_pTextColor[iSub]);
else
return GetColorRef(DEF_TEXT);
}
修改后的代码:
COLORREF *m_pBackColor;
COLORREF *m_pTextColor;
m_pBackColor=new COLORREF[column_count];
m_pTextColor=new COLORREF[column_count];
BOOL SetBackColor(COLORREF color, int iSub) {
if (iSub<m_column_count) {
m_pBackColor[iSub] = color;
return TRUE;
} else return FALSE; }
BOOL SetTextColor(COLORREF color, int iSub)
{
if (iSub<m_column_count) {
m_pTextColor[iSub] = color;
return TRUE;
} else return FALSE; }
COLORREF GetBackColor(int iSub)
{
if (iSub<m_column_count)
return m_pBackColor[iSub];
else
return ::GetSysColor(COLOR_WINDOW);}
COLORREF GetTextColor(int iSub)
{
if (iSub<m_column_count)
return m_pTextColor[iSub];
else
return ::GetSysColor(COLOR_WINDOWTEXT);}
更多精彩
赞助商链接