关于CListCtrl显示bmp图片问题的解决

      前几天做一个聊天程序时在实现用户列表时用到了CListCtrl控件,突然想在每列前面加上一个图标或图片。然而能实现ICON图标加载,却不能显示图片。今天终于找到原因了,主要原因是局部对象问题。

      先看代码实现:

  1. void CMyListView::OnInitialUpdate()
  2. {
  3.    CListView::OnInitialUpdate();
  4.    //创建ListCtrl
  5.    m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS,
  6.                                                           CRect(0,0,400,200),
  7.                                                                      this, 0);
  8.    //设置ListCtrl的风格
  9.    m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle()|
  10.                                         LVS_EX_SUBITEMIMAGES );
  11.    //------加载位图;
  12.    Bitmap[0].LoadBitmap(IDB_BITMAP1);   
  13.    Bitmap[1].LoadBitmap(IDB_BITMAP2);
  14.    Bitmap[2].LoadBitmap(IDB_BITMAP3);
  15.    Bitmap[3].LoadBitmap(IDB_BITMAP4);
  16.    //Ⅰ.将位图添加到ImageList里面
  17.    m_Imagelist.Create(24, 24,ILC_COLOR4|ILC_MASK, 4, 4);   //----- 实例图象框;
  18.    for (int i = 0 ; i < 4 ; i ++)
  19.    {
  20.      m_Imagelist.Add(&Bitmap[i], RGB(0, 0, 0));
  21.    }
  22.    //Ⅱ.将ImageList和ListCtrl关联,关键之二
  23.    m_ListCtrl.SetImageList(&m_Imagelist,LVSIL_SMALL); 
  24.    //3、初始化列表表头
  25.    m_ListCtrl.InsertColumn(0,_T("T1"),LVCFMT_LEFT,80);
  26.    m_ListCtrl.InsertColumn(1,_T("A1"),LVCFMT_LEFT,32);
  27.    m_ListCtrl.InsertColumn(2,_T("A2"),LVCFMT_LEFT,32);
  28.    //4、listctrl 创建数据--
  29.    CString str;
  30.    for(int j = 0;j < 4 ;j ++)
  31.    {
  32.      m_ListCtrl.InsertItem(j,NULL,1);
  33.      LVITEM item;                      //Item结构,很全的东西
  34.      item.iItem = j;                   //Item索引
  35.      item.iSubItem = 0;                //SubItem索引
  36.      //Ⅲ.设定显示的格式
  37.      item.mask = LVIF_IMAGE|LVIF_TEXT; //显示文本和图片
  38.      //Ⅳ.设定对应图片的索引值
  39.      item.iImage = j;                  //图片索引值
  40.      item.pszText = _T("Virqin");      //在当前Item要显示的文本
  41.      m_ListCtrl.SetItem(&item);        //设定Item
  42.    }
  43. }

       以上代码就能实现在列表第一列显示图片,共四行,以及图片后面跟着文字"Virqin"。现在要说的倒不是它实现后的效果,说说我遇到的问题吧,最初我把Bitmap和m_ImageList两个对象都是在当前函数里定义的,因为是局部变量,当本函数执行完后对象就会被析构,所以图像列表和位图都被析构了。

       我总结一下出现我这样问题的根本原因还是对C++的对象意识不深,理解太肤浅。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值