用CImageList的对象只能把每一行的第一列设置为图标,那么怎么把其他列也设置为图标呢?
多谢多谢!

解决方案 »

  1.   

    用ListCtrl的函数设置是不行的,可以在指定位置用gdi函数自己画.
      

  2.   

    1. 为你的ListCtrl添加扩展mask:
    LVS_EX_SUBITEMIMAGES
    方法是,在你的OnInitDialog中加入下列代码:
    ::SendMessage( pLstCtl->GetSafeHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, VS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES);2. 创建你的ImageList
    m_imglstYourImage.Create(IDB_YOURBITMAP, 8, 0, RGB(255, 255, 255));3. 将上面的ImageList与你的ListCtrl绑定:
    m_lstYourListCtrl.SetImageList(&m_imglstYourImage,  LVSIL_SMALL);4. 在向你的ListCtrl添加数据行时:
    LVITEM lvItem;
    lvItem.mask = LVF_IMAGE;
    lvItem.iImage = 0;//要添加的位图在m_lstimgYourImage中的序号
    m_lstYourListCtrl.SetItem(nItem, &lvItem);记得要给分哦!
      

  3.   

    实乃高手!
    ::SendMessage( pLstCtl->GetSafeHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, VS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES);
    应该是::SendMessage( pLstCtl->GetSafeHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES);