CImageList就是一个容器,用来存储图片资源,方便这些资源被CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl,CListCtrl等使用。

要使用CImgeList首先要使用它的create函数:

一般用的比较多的是这一个函数,当然,它还有很多重载,自己可以去翻阅msdn.

BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );

cx与cy表示图标的大小,nFlags确定建立图像列表的类型,可以是以下值的组合: ILC_COLOR、ILC_COLOR4、ILC_COLOR8、ILC_COLOR16、ILC_COLOR24、ILC_COLOR32、 ILC_COLORDDB和ILC_MASK;

用的较多的是ILC_COLOR32表示颜色数目,自然越多越好,ILC_MASK也很常用,如果不设置这个值,那个图标透明的地方会被黑色填充。

nInitial指的是初始时list中包含的图片容量,nGrow表示当原来的图片容量用完之后每次添加的新的容量(大于等于1就可以了).

然后我们就添加图片了,暂时我只说明从程序中资源文件中添加图标这种方法

        CImageList *pImage;pImage = new CImageList();pImage->Create(16, 16, ILC_COLOR32 | ILC_MASK, 2, 2);//添加图标HICON icon = AfxGetApp()->LoadIcon(IDI_MAIL);pImage->Add(icon);

然后在要使用图片资源的地方调用SetImageList即可,添加对于该类资源的引用。

CImageList* SetImageList( CImageList* pImageList, int nImageList );
      其返回值是指向前一个图像列表控件的一个指针,如果不存在前一个图像列表则为NULL;其中参数pImageList是指向图像列表的标识,nImageList是图像列表的类型,可以是如下值:
       LVSIL_NORMAL 用大图标方式进行图像列表;
       LVSIL_SMALL 用小图标方式进行图像列表;

我们以在CListView为基类的子类中的OnInitialUpdate()函数为例,来看一看如何使用:

void CEmailListView::OnInitialUpdate()
{CListView::OnInitialUpdate();//得到内置的listctrl的引用CListCtrl& ctl = GetListCtrl();//获取当前的窗口风格DWORD dwStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);//清除显示方式位dwStyle &= ~LVS_TYPEMASK;//设置报表风格dwStyle |= LVS_REPORT;/**     *     LVS_TYPEMASK    0000011*     LVS_LIST;*     LVS_REPORT;*     LVS_SMALLICON;*     LVS_ICON;*///设置窗口风格::SetWindowLong(m_hWnd, GWL_STYLE, dwStyle);//得到扩展风格dwStyle = ctl.GetExtendedStyle();/**   LVS_EX_GRIDLINES   网格线(只适用与报表风格的listctrl)*   LVS_EX_FULLROWSELECT 整行选中*   LVS_EX_CHECKBOXES   有选中框*/dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES;//设置扩展风格ctl.SetExtendedStyle(dwStyle);//设置背景颜色ctl.SetBkColor(RGB(255, 255, 255));//设置文本颜色ctl.SetTextColor(RGB(255, 0, 0));//设置边框颜色//ctl.SetBkColor(RGB(0, 0, 255));ctl.InsertColumn(0, _T("发件人"), LVCFMT_CENTER, 200);ctl.InsertColumn(1, _T("主题"), LVCFMT_CENTER, 260);ctl.InsertColumn(2, _T("时间"), LVCFMT_CENTER, 160);pImage = new CImageList();pImage->Create(16, 16, ILC_COLOR32 | ILC_MASK, 2, 2);//添加图标HICON icon = AfxGetApp()->LoadIcon(IDI_MAIL);pImage->Add(icon);GetListCtrl().SetImageList(pImage, LVSIL_SMALL);GetListCtrl().InsertItem(0, (LPCTSTR)_T("972733802@qq.com"), 0);GetListCtrl().SetItemText(0, 1, (LPCTSTR)_T("天下无不散之筵席"));GetListCtrl().SetItemText(0, 2, (LPCTSTR)_T("2015-01-01"));}

注:pImage为指向CImageList的指针.

效果如下:

使用CImageList我们经常犯的一个错误是,我们经常这么写:

void CEmailListView::OnInitialUpdate()
{'''''''''''''''''''''''''CImageList pImage;pImage.Create(16, 16, ILC_COLOR32 | ILC_MASK, 2, 2);//添加图标HICON icon = AfxGetApp()->LoadIcon(IDI_MAIL);pImage.Add(icon);GetListCtrl().SetImageList(&pImage, LVSIL_SMALL);'''''''''''''''''''''''''
}

这么写的话,我们的程序将看不到图标,很简单的一个道理,因为pImage是一个局部变量,OnInitialUpdate()函数执行完毕之后pImage就已经析构了,哪里还有什么对于图标的引用,解决的办法就是让pImage成为类的成员变量或者让其成为一个指针。

使用CImageList的一点心得相关推荐

  1. 新手网站推广邮件群发一点心得

    关于邮件群发一点心得 请勿见笑,本人新人啊.新人做法还是比较菜的.说一下邮件群发吧.最近本人下软件不下百次.病毒木马电脑已经是满满一箩筐了,幸好是虚拟机里. 首先收集相关邮件地址这里转一篇文章 营销如 ...

  2. 谈谈选用技术的原则,技术学习方法技巧,阅读代码的技巧及其它 MSF的一点心得...

    谈谈技术原则,技术学习方法,代码阅读及其它(正文) 这篇文章是前一阵在水木BBS上和别人讨论中偶自己发言的摘编,是偶这几年开发过程完全经验式的总结.完全个人经验,供批判. 一.选用技术的原则 比较规范 ...

  3. mysql数据库管理系统模式_MYSQL命令行模式管理MySql的一点心得

    MYSQL命令行模式管理MySql的一点心得 MYSQL命令行模式管理MySql的一点心得 MySql数据库是中小型网站后台数据库的首选,因为它对非商业应用是免费的.网站开发者可以搭建一个" ...

  4. 将asp.net1.1的应用程序升级到asp.net2.0的一点心得

    将asp.net1.1的应用程序升级到asp.net2.0的一点心得 费了好一袋烟工夫把CommunityServer升级到了Asp.Net2.0平台,一点心得: vs2005可以很方便的帮我们把vs ...

  5. 使用Webbrowser的一点心得体会

    使用Webbrowser的一点心得体会 原文:使用Webbrowser的一点心得体会 自从用上VS2005后,发现多了个WebBrowser控件(.net 2003中不带),为图方便吧,有好多小工具就 ...

  6. 关于MySQL存储过程异常处理的一点心得

    关于MySQL存储过程异常处理的一点心得 参考文章: (1)关于MySQL存储过程异常处理的一点心得 (2)https://www.cnblogs.com/lrl45/p/6037513.html ( ...

  7. 做互联网产品运营的一点心得

    一个网站运营团队大致粗略地可分成三个部门:产品部.设计部和技术部,产品部为核心,设计部和技术部为支撑,如果网站产品较多比如有资讯内容.论坛.博客.SNS等,那产品部会配备好几个人,每人负责一个产品.在 ...

  8. 转载tangl_99的Servlet 实现文件上传下载--自己的一点心得

    这个周末终于可以好好锻炼一下我的IBM ThinkPad T43了.今天看了一些关于JSP,Servlet方面的资料,写了简单的两个JavaBean.一个是UpLoad,一个是DownLoad.写得很 ...

  9. java学不下去能学web安全吗,这半年学习 Web 安全的一点心得体会

    原标题:这半年学习 Web 安全的一点心得体会 来自公众号: 信安之路 大家好,我是 Mirror(王宇阳),专科在读的大二学生:接触信安时间不长,大佬多多指教.信安之路成长平台网站开放后我就在双十一 ...

  10. java听课心得体会,Java初步学习的一点心得体会

    从2015年9月份开始接触到java语言,一开始学习并不上心,而且一直在找自学资源,在没有大牛带的情况下,一直拖到2016年3月份,正式开启了我的java自学之路,现在的我还处在刚入门阶段,谈谈自己学 ...

最新文章

  1. java 变量的线程可见性_Java多线程——变量可见性
  2. 云炬Android开发笔记 2-2 Android studio项目上传到Github及无法连接Github的问题处理
  3. java.util.zip.ZipException: error in opening zip file
  4. H5的Websocket基本使用
  5. 计算机软件不是出租的主要标的时著作权,著作权中出租权的适用对象有哪些?...
  6. 万字详解Docker架构原理、功能及使用
  7. leanote 支持php,Leanote source leanote源码导读
  8. 高效地获取XMLhttp对象
  9. 怎么加密高程点_珠峰咋有4个高度?专业测绘科技工作者解读珠峰高程测算过程...
  10. url伪静态、url重写
  11. 基于PHP的汉服文化交流平台 毕业设计-附源码240903
  12. docker 安装redmine,禅道,jira
  13. 微信开发 完美微信自动转发朋友圈-flutterAndroid
  14. Conda更新或安装包时出现Verifying transaction: failed+SetupToolsRemoveError
  15. pythoninterpreter_java-Jython :: PythonInterpreter可以使用哪些模块...
  16. Linux网络编程8——线程池模型
  17. arcgis10之生成无背景色的png图片
  18. 用Ajax+js+jQuery实现无闪烁定时刷新页面 定时刷新
  19. 【QT】翻金币小游戏·我的学习版
  20. Intelligent Parking Building

热门文章

  1. 学生信息管理系统总结
  2. ROS安装超详细保姆级教程
  3. 【特效】UE4 Niagara 制作爆炸特效
  4. android 修改机型,教你一个无需Root就能修改手机型号的简单方法
  5. 计算机原理中的cps,信息物理融合系统(cps)原理pdf
  6. fclose用法matlab,fclose和close之间的区别
  7. flash实验中需添加的flash.c文件
  8. VirtualBox下安装Windows Server 2008
  9. 稀疏表示 过完备字典
  10. tracepro中文pojie版-tracepro附安装教程