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

修改一个完全颜色的CListCtrl类

 2007-11-01 20:24:25 来源:WEB开发网   
核心提示:4、在类CColorListCtrl的定义和函数说明中进行如下修改: 源代码:BOOL SetItemTextColor(ITEM_COLOR color, int Index, int iSub); BOOL SetItemBackgndColor(ITEM_COLOR color, int Index, int i

4、在类CColorListCtrl的定义和函数说明中进行如下修改: 源代码:

BOOL SetItemTextColor(ITEM_COLOR color, int Index, int iSub);
  BOOL SetItemBackgndColor(ITEM_COLOR color, int Index, int iSub);
  BOOL CColorListCtrl::SetItemBackgndColor(ITEM_COLOR color, int Index, int iSub)  
  BOOL CColorListCtrl::SetItemTextColor(ITEM_COLOR color, int Index, int iSub)   

修改后的代码:

BOOL SetItemTextColor(COLORREF color, int Index, int iSub);
  BOOL SetItemBackgndColor(COLORREF color, int Index, int iSub);
  BOOL CColorListCtrl::SetItemBackgndColor(COLORREF color, int Index, int iSub)
  BOOL CColorListCtrl::SetItemTextColor(COLORREF color, int Index, int iSub)   

删除的源代码:

// only for TEST
       if (ret_index<3)
       {
         p->SetBackColor(ITEM_COLOR(ret_index+BLUE),0);
         p->SetTextColor(ITEM_COLOR(ret_index+RED ),0);
       }
       else
       if (ret_index<=6)
       {
         p->SetBackColor(ITEM_COLOR(ret_index+BLUE),1);
         p->SetTextColor(ITEM_COLOR(ret_index+RED ),1);
       }
       else
       {
         p->SetBackColor(ITEM_COLOR((ret_index+BLUE)&0xF),2);
         p->SetTextColor(ITEM_COLOR((ret_index+RED )&0xF),2);
       }
       // end: only for TEST
 

5、替换如下所示的代码:

DEF_BACKGROUND替换成::GetSysColor(COLOR_WINDOW);
  DEF_TEXT替换成::GetSysColor(COLOR_WINDOWTEXT);
  GetColorRef(DEF_DESELTEXT)替换成::GetSysColor(COLOR_HIGHLIGHTTEXT);
  GetColorRef(DEF_SELBACKGROUND)替换成::GetSysColor(COLOR_ACTIVECAPTION);
  GetColorRef(DEF_SELTEXT)替换成::GetSysColor(COLOR_HIGHLIGHTTEXT);
  GetColorRef(DEF_DESELBACKGROUND)替换成::GetSysColor(COLOR_INACTIVECAPTION);
  pDC->SetTextColor(pMyLParam->GetTextColor(DEF_DESELTEXT))替换成pDC->SetTextColor(pMyLParam->GetTextColor(5)); 

修改后的示例程序如下图所示,基本功能与原来的程序一样。

本来我还计划把对CListCtrl类的排序功能加入其中,可是到实现的时候才发现异常复杂,因为在CListCtrl控件的“More Style”属性中已选中“Owner draw fixed”选项,对CListCtrl控件颜色的修改实际上是通过自画来实现的,导致了CListCtrl控件某些函数的不可使用,例如InsertItem()等等,我尝试做了一下排序,总是会出现一些无法理解的错误,照我的理解只能把项全部存进列表中,然后对列表进行排序,再清空CListCtrl控件的所有项罗列出已排序的项。如果哪位高手有独到的解决方法,请不吝指教!

上一页  1 2 3 

Tags:修改 一个 完全

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