如何在ListCtrl中显示不同的图片

使用范围:
1.如果你想list的不同item前面都是不一样的图片,可以用这个方法(这个方法是Icon模式,其它模式需要自己稍微修改一下就行,类似的)
2.用list来显示图片(这个只支持Icon模式)

效果如图:

其中图片下面的数字就是每个item的text,可以不要也可以要.

步骤如下:
1.添加资源(我添加的是位图资源)
这一步骤前面有文章已经说过,这里不再详细说了.

2.右键单击list属性,设置view为 Icon
如图所示:

3.关联list变量,然后添加成员变量和函数

    CImageList m_ImgList; //图像列表对象
    UINT m_uBmpID[20]; //存放资源ID
    UINT m_uImgID[20]; //存放添加到图像列表中的ID


    CListCtrl m_list;
    void Init();   //初始化m_uBmpID数组
    void AddBmp(); //向图像列表中添加位图

4.void Init 函数实现如下

    m_uBmpID[0] = IDB_BITMAP1;
    m_uBmpID[1] = IDB_BITMAP2;
    m_uBmpID[2] = IDB_BITMAP3;
    m_uBmpID[3] = IDB_BITMAP4;
    m_uBmpID[4] = IDB_BITMAP5;
    m_uBmpID[5] = IDB_BITMAP6;
    m_uBmpID[6] = IDB_BITMAP7;
    m_uBmpID[7] = IDB_BITMAP8;
    m_uBmpID[8] = IDB_BITMAP9;
    m_uBmpID[9] = IDB_BITMAP10;
    m_uBmpID[10] = IDB_BITMAP11;
    m_uBmpID[11] = IDB_BITMAP12;
    m_uBmpID[12] = IDB_BITMAP13;
    m_uBmpID[13] = IDB_BITMAP14;
    m_uBmpID[14] = IDB_BITMAP15;
    m_uBmpID[15] = IDB_BITMAP16;
    m_uBmpID[16] = IDB_BITMAP17;
    m_uBmpID[17] = IDB_BITMAP18;
    m_uBmpID[18] = IDB_BITMAP19;
    m_uBmpID[19] = IDB_BITMAP20;

5.void AddBmp()函数实现如下

    //创建图像列表 这里是32*32的图片 真彩色 透明背景
    m_ImgList.Create(32, 32, ILC_COLOR24 | ILC_MASK, 0, 0);
    for (int i = 0; i < 20 ; i++)
    {
        CBitmap bmp;
        bmp.LoadBitmap(m_uBmpID[i]);   //加载位图
        m_uImgID[i] = m_ImgList.Add(&bmp, RGB(0, 0, 0)); //添加位图到图像列表,返回该图像的序号
    }
    //获取指向列表控件的指针
    CListCtrl* pLc = (CListCtrl*)GetDlgItem(IDC_LIST1);
    pLc->ModifyStyle(LVS_ALIGNLEFT,LVS_ALIGNTOP);  //把水平滚动条换成垂直滚动条
    //这里必须用指针才能设置
    pLc->SetImageList(&m_ImgList, LVSIL_NORMAL);//显示正常图标

6.接着在初始化对话框中调用这两个函数即可

7.最后再添加按钮函数中添加item即可

    int iCount = m_list.GetItemCount();//获取列表中有多少item
    int i = iCount % 19;    //循环
    CString strText;
    strText.Format(_T("%d"), iCount + 1); //item text可要可不要
    m_list.InsertItem(iCount, strText,m_uImgID[i]);//最后一个参数就是图片的Id

只要稍加修改就可以做成 small icon list report 模式的带图标的列表了.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值