VC程序使用CImageList类

http://blog.csdn.net/bitsjx/article/details/6073596

要说CImageList类已经不是第一次接触了,这个类在一些VC程序里面经常会用到。

小弟在下面总结了一些自己用到的情况:

 

首先在*.h头文件里面加入CImageList类的定义:

[cpp]  view plain copy
  1. CImageList m_ImgList;  

然后在类的实现*.cpp里面使用下面的代码创建CImageList链表:

[cpp]  view plain copy
  1. //创建CImageList对象  
  2. m_ImgList.Create(16,16,ILC_COLOR24,11,0);  
  3. //设置背景色  
  4. m_ImgList.SetBkColor(RGB(255,255,255));  
  5. //图标数组  
  6. UINT nIconID[]={IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4,IDI_ICON5,IDI_ICON6,IDI_ICON7,IDI_ICON8,IDI_ICON9,IDI_ICON10,IDI_ICON11};  
  7. //依次将图标ID加入链表  
  8. for (int index=0;index<11;index++)  
  9. {  
  10.     m_ImgList.Add(AfxGetApp()->LoadIcon(nIconID[index]));  
  11. }  
   

在MFC里面很多控件类都有SetImageList这个函数,这个函数可以使图标和控件类关联在一起。只不过每个控件的具体实现不一样,参数也不一样。

下面是CListCtrl这个控件类的实现:

[cpp]  view plain copy
  1. m_ListCtl.SetImageList(&m_ImgList,LVSIL_SMALL);  

实现之后列表框的效果,看起来还不错:

 

除此之外有些InsertItem函数也有一个nImage的参数,这个参数是一个int类型的变量。所以我们要将图标同时插入的时候,只要在这个函数里面指定一下图标在CImageList链表里面的索引之就OK了!

[cpp]  view plain copy
  1. //Tab控件的一种使用形式  
  2. SetImageList(&m_ImgList);  
  3.   
  4. UINT idx = 0;  
  5. for (idx = 0; idx < m_nNumOfPages; idx++)  
  6. {  
  7.     m_pPages[idx]->Create(m_IDD[idx], this);  
  8.     InsertItem(idx, m_Title[idx],idx);  
  9.         //第三个idx参数就是nImage参数  
  10. }  
  11.   
  12. //Tree控件的一种使用形式  
  13. m_TreeCtrl.SetImageList(&m_ImgList,TVSIL_NORMAL);  
  14.   
  15. HTREEITEM hItem1=m_TreeCtrl.InsertItem(_T("1级子节点01"),0,1,hRoot);  
  16. //参数0,1也是nImage参数,分别代表两个nImage索引  
  17.   
  18. CString strText;  
  19. for (int index=0;index<=50;index++)  
  20. {  
  21.     strText.Format(_T("%d"),index);  
  22.     strText=_T("1级子节点")+strText;  
  23.     m_TreeCtrl.InsertItem(strText,0,1,hRoot);  
  24. }  

 

CImageList类还可以用在其它的场合,比如在基于对话框的工具栏的实现、树形列表的实现、Tab的实现等等,可以说使用范围非常广泛了!

下面看一下小弟实现的几种形式:

 

Tree控件的效果,比如说实现像QQ这样的软件的时候可以尝试一下:

 

 

Tab控件的效果,个人感觉有点像浏览器的选项卡,所以搞了一下看看效果:

 

 

发现自己自从上次经过了福昕的笔试之后就再也不惧查文档了,可能是那次的一下午的经历让我喜欢上MSND了吧!

这两天在看一个视频,当然上面的也是视频里面的例子,只不过为了不让自己忘记,写一下感受。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值