修改一个完全颜色的CListCtrl类

2016-01-29 12:08 114 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

修改一个完全颜色的CListCtrl类

作者:lypindream

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

下载源代码

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

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




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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
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:
                        

来源:http://www.tulaoshi.com/n/20160129/1484747.html

延伸阅读
标签: Web开发
HTML  HEAD   SCRIPT LANGUAGE="JavaScript"   !--  var Drag = {   sx : 0,   sy : 0,   ex : 0,   ey : 0,   lx : 0,   ly : 0,   offsetX : 0,   offsetY : 0,   cdom : null,   dragAble : false,   dragFun : null,   tempDrag : function(){  &nb...
标签: Web开发
基本用法: 代码如下: var ajax = new AjaxObj(url); ajax.addListener(200, function(r){ alert(r); }); ajax.send(); 也可以连续调用: 代码如下: var ajax = new AjaxObj(url).addListener(200, function(r){ alert(r); }).send(); 另外还支持自定义的POST或GET方式请求,以及监视不同的HTTP状态码,自己看代码琢磨...
标签: PHP
  一个颜色轮换的简单例子,使用三元运算子,使程序简练。 我们曾经在网站上看过一些表格单元格的背景颜色是隔行变化的,其实用下面一段很小的一段代码就可以实现: $color=(($coloralter++ %2)? "e0e0e0":"e8e8e8") ,即通过将变量累加和2取余,运用三元运算子来取得两个不同得颜色值。 示例如下: <html <...
标签: Web开发
我现在还不会写持久层,就用这种方法加上存储过程用,我感觉还比较爽,希望大家多多指教 public class clsdb {      public clsdb()  {   //   // TODO: 在此处添加构造函数逻辑   //  } //数据库连接     public static SqlCo...
标签: Web开发
非常不错的一个javascript 类 代码如下: /*    *  Author:aoao  *    Homepage:http://www.loaoao.com  *  Email:loaoao@gmail.com / QQ:2222342  *  Copyright (c) 2006 aoao  *  Licensed under ...

经验教程

917

收藏

89
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部