修改一个完全颜色的CListCtrl类

熊小熊罒

熊小熊罒

2016-01-29 12:08

修改一个完全颜色的CListCtrl类,修改一个完全颜色的CListCtrl类

修改一个完全颜色的CListCtrl类

作者:lypindream

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

  在使用CListCtrl控件的过程中,我们会发现使用及其不方便,特别是在使用“report"显示模式时, 想给指定条目添加背景颜色,CListCtrl控件所提供的设置颜色函数只能使得控件的界面变得好看一些,根本不能满足我们的要求,我们无法把特定的一项或几项添加上不同的颜色以示区别。 幸运的是很多VC的使用者在改造CListCtrl类,使之更加功能强大上做了很多工作,开发出了各种各样的继承类来实现这个功能,Sven Freitag 就是其中的一员。他开发出了CListCtrl的继承类CColorListCtrl来实现给指定的条目加背景色的功能,并无偿的在网上公布给VC的使用者,我在源代码中收集了他的源程序,各位读者可以先阅读学习一下。

CColorListCtrl类示例代码运行效果如下图所示:




怎样使用CColorListCtrl类:
1、把下面的文件加入你的工程中去:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)
color.hcolor.cppColorListCtrl.hColorListCtrl.cpp

2、在对话框头文件中加入ColorListCtrl.h的说明,然后用CColorListCtrl代替CListCtrl声明成员变量。
3、具体的使用方法,请看示例代码中的ColoredListCtrlDlg.cpp文件。

CColorListCtrl类存在的不足:

  在使用CColorListCtrl类的过程中,我体会到了随意添加条目颜色的乐趣,但同时也发现它存在的一些不足之处。下面我列出color.h和color.cpp文件代码来进行分析。color.h源代码如下所示:

// Author: SFr frydaysoft@gmx.de#ifndef AFX_COLOR_H__9FC7D36B_FC88_42FD_8DAA_2F70016038BA__INCLUDED_#define AFX_COLOR_H__9FC7D36B_FC88_42FD_8DAA_2F70016038BA__INCLUDED_#include "windows.h"typedef enum {DEF_BACKGROUND=0, DEF_TEXT, DEF_SELBACKGROUND, DEF_SELTEXT, DEF_DESELBACKGROUND, DEF_DESELTEXT,BLACK,BLUE,GREEN,CYAN,RED,MANGENTA,YELLOW,WHITE,DARKBLUE,DARKGREEN,BLUEGREEN,BROWN,PURPUR,OLIV,DARKGRAY,LIGHTGRAY,LIGHTBLUE,DARKWHITE,MIDDLEGRAY}ITEM_COLOR;typedef struct {char str[50];ITEM_COLOR col;}ColorList;#define COLLIST_MAX 25extern ColorList colList[COLLIST_MAX];COLORREF GetColorRef(ITEM_COLOR lParam);#endifcolor.cpp源代码如下所示:// Author: SFr frydaysoft@gmx.de#include "stdafx.h"#include "color.h"ColorList colList[COLLIST_MAX]={{"DEF_BACKGROUND",DEF_BACKGROUND},{"DEF_TEXT",DEF_TEXT},{"DEF_SELBACKGROUND",DEF_SELBACKGROUND},{"DEF_SELTEXT",DEF_SELTEXT},{"DEF_DESELBACKGROUND",DEF_DESELBACKGROUND},{"DEF_DESELTEXT",DEF_DESELTEXT},{"BLACK",BLACK},{"BLUE",BLUE},{"GREEN",GREEN},{"CYAN",CYAN},{"RED",RED},{"MANGENTA",MANGENTA},{"YELLOW",YELLOW},{"WHITE",WHITE},{"DARKBLUE",DARKBLUE},{"DARKGREEN",DARKGREEN},{"BLUEGREEN",BLUEGREEN},{"BROWN",BROWN},{"PURPUR",PURPUR},{"OLIV",OLIV},{"DARKGRAY",DARKGRAY},{"LIGHTGRAY",LIGHTGRAY},{"LIGHTBLUE",LIGHTBLUE},{"DARKWHITE",DARKWHITE},{"MIDDLEGRAY",MIDDLEGRAY}};COLORREF GetColorRef(ITEM_COLOR lParam) {switch (lParam){case DEF_BACKGROUND: return ::GetSysColor(COLOR_WINDOW); break;case DEF_TEXT: return ::GetSysColor(COLOR_WINDOWTEXT); break;case DEF_SELBACKGROUND: return ::GetSysColor(COLOR_ACTIVECAPTION); break;case DEF_SELTEXT: return ::GetSysColor(COLOR_HIGHLIGHTTEXT); break;case DEF_DESELBACKGROUND: return ::GetSysColor(COLOR_INACTIVECAPTION); break;case DEF_DESELTEXT: return ::GetSysColor(COLOR_INACTIVECAPTIONTEXT ); break;case BLACK: return RGB(0,0,0); break; //blackcase BLUE: return RGB(0,0,255); break; //bluecase GREEN: return RGB(0,255,0); break; //greencase CYAN: return RGB(0,255,255); break; //cyancase RED: return RGB(255,0,0); break; //redcase MANGENTA: return RGB(255,0,255); break; //mangentacase YELLOW: return RGB(255,255,0); break; //yellowcase WHITE: return RGB(255,255,255);break; //whitecase DARKBLUE: return RGB(0,0,128); break; //dark-bluecase DARKGREEN: return RGB(0,128,0); break; //dark-greencase BLUEGREEN: return RGB(0,128,128); break; //blue-greencase BROWN: return RGB(128,0,0); break; //browncase PURPUR: return RGB(128,0,128); break; //purpurcase OLIV: return RGB(128,128,0); break; //olivcase DARKGRAY:      
展开更多 50%)
分享

猜你喜欢

修改一个完全颜色的CListCtrl类

C语言教程 C语言函数
修改一个完全颜色的CListCtrl类

可设置单元格颜色的ClistCtrl类

C语言教程 C语言函数
可设置单元格颜色的ClistCtrl类

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC可设置单元格颜色的ClistCtrl类

编程语言 网络编程
VC可设置单元格颜色的ClistCtrl类

一个Ajax类

Web开发
一个Ajax类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个封装的Ajax类

Web开发
一个封装的Ajax类

一个改进的UBB类

PHP
一个改进的UBB类

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

从 Visual Basic 6.0 到 Visual Basic.NET 的转换(5)

从 Visual Basic 6.0 到 Visual Basic.NET 的转换(5)

HTML组件之:编写日历(3)

HTML组件之:编写日历(3)
下拉加载更多内容 ↓