VC CListCtrl 图标不显示的问题

VC CListCtrl 图标不显示的问题

1。没有将CImageList设置为窗体成员变量导致的。

BOOL CMyDlg::OnInitDialog()

{

CImageList images;

images.Create(15, 15, ILC_COLOR16, 1, 1);


images.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));

m_listctrl.SetImageList(&images, LVSIL_NORMAL);

m_listctrl.SetImageList(&images, LVSIL_SMALL);

m_listctrl.SetImageList(&images, LVSIL_STATE);

m_listctrl.InsertItem(0, _T("text"), 0);

}

 

2.CImageList改成了成员变量后,可以正常显示。于是接下来尝试将ICON换成Bitmap,又出现不能显示的问题,不过只是当选中某个Item的时候,他的图片不能显示。

//CREATE IMAGELIST    
     m_images.Create(15, 15, ILC_COLOR32, 3, 3);    
    // Add my bitmap, make all black pixels transparent.
     CBitmap bm;
     bm.LoadBitmap(IDB_arrow);
     m_images.Add(&bm, RGB(0, 0, 0));

 

开始怀疑是CBitmap为局部变量所致,但是不对。后来查看那个位图资源文件的属性发现是256色的,使用ILC_COLOR32有点不大合适,于是改成了ILC_COLOR16就好了。

3.以上是Debug下解决的问题,后来出现在debug版本中图标可以正常变换,但是Release版本中图标不能变化的问题。网上查贴,一般就是说这可能是由于变量没有初始化造成的(因为debug版本会进行一些初始化,而release则没有),经查,果然如此。

使用的是CListCtrl,在不同情况下要设置不同图片,使用SetItem( ... )方法,其参数是一个结构,虽然该结构有标志位指出要使用结构中的哪个参数来进行设置,但还是要将其他参数清零才行。就是这个结构没有初始化的毛病。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值