WEB开发网
开发学院软件开发VC 修改一个完全颜色的CListCtrl类 阅读

修改一个完全颜色的CListCtrl类

 2007-11-01 20:24:25 来源:WEB开发网   
核心提示:由上述源代码可以看出,CColorListCtrl类给我们提供的可供填充的颜色数量十分有限,修改一个完全颜色的CListCtrl类(2),只有BLACK,BLUE,GREEN,CYAN,RED,MANGENTA,YELLOW,WHITE,DARKBLUE,DARKGREEN,BLUEGREEN,BROWN,PURPUR

由上述源代码可以看出,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);}

Tags:修改 一个 完全

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接