CListCtrl列表框添加与更改图标

本文转载:http://eyinlu.blog.163.com/blog/static/24232161201121911511859/

一、添加图标

首先把列表框的属性中样式设为report样式。然后在给列表框插入列之前执行下面的操作:

CBitmap bitmap;
        m_Imagelist.Create (16,16,ILC_COLOR24 ,5,1);
        bitmap.LoadBitmap(IDB_TIME);
        m_Imagelist.Add (&bitmap,RGB(0,0,0));
         bitmap.Detach (); //在加载前先释放位图//bitmap.DeleteObjec();
         bitmap.LoadBitmap(IDB_TICK);
        m_Imagelist.Add (&bitmap,RGB(0,0,0));
        //这样就给m_Imagelist 链表插入了两张图标。

m_resList.SetExtendedStyle(LVS_EX_CHECKBOXES |LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES); //特别注意最后一个属性。

m_resList.SetImageList(&m_Imagelist, LVSIL_SMALL);   //把m_Imagelist 关联给列表框。

msdn上的例子:

// Add my icons.
        pmyImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
        pmyImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
        // Add my bitmap, make all black pixels transparent.
        CBitmap bm;
        bm.LoadBitmap(IDB_BITMAP1);
        pmyImageList->Add(&bm, RGB(0, 0, 0));

然后,在给列表框插入一行时:

m_resList.InsertItem(j,str,0); //最后一个参数为想要的图标在m_Imagelist 中的下标。

二、动态更改图标

 LVITEM Itemattr;

 Itemattr.iItem=i;  //指定哪一行
         Itemattr.mask   =   LVIF_IMAGE;
         Itemattr.iImage =4;  //要把当前图标改成m_Imagelist 中下标为 4 的图标。
         m_resList.SetItem (&Itemattr); //更改成功。

三、关于两次LoadBitmap的错误

有一个CBitmap对象,先前已经用LoadBitmap加载了一副位图,但如果在后面的操作中想再次LoadBitmap的话会出错.解决方法是先判断这个对象是否已经加载了位图,如果           加载了,就释放掉.
       CBitmap bmp;
        if(bmp.m_hObject)
         {
            bmp.Detach();
        }
        bmp.LoadBitmap(位图ID);

四、树形控件设置图标

与列表框控件添加图标方法是一样的,只是SetItemImage的时候,函数参数不一样。只解释两个:

nImage 
        Index of the item's image in the tree view control's image list. 
        nSelectedImage 
        Index of the item's selected image in the   tree view control's image list.

//比如你设定的是1,2 则该成员未被选择时显示第二个图标,选择时显示第三个图标。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值