m_pImagelist.Create(16, 16, ILC_COLOR8 | ILC_MASK,  0, 1);
bm.LoadBitmap(IDB_BITMAP_DIALED);
m_list_callrecord.SetImageList(&m_pImagelist,LVSIL_STATE);for (int i=0;i < m_callrecord.crlist.GetCount();i++)
{
Call_Record cr=m_callrecord.crlist.GetNext(pos);
m_list_callrecord.InsertItem(i, cr.callid);
m_list_callrecord.SetItemText(i, 1, cr.number);
m_list_callrecord.SetItemText(i, 2, cr.displayname);
m_list_callrecord.SetItemText(i, 3, cr.time); LV_ITEM item;
item.mask=LVIF_IMAGE;
         item.iItem =i;
item.iSubItem =4;
item.iImage=0;
m_list_callrecord.SetItem(&item);
}我想在第5列显示一个bmp图片,可是怎么也出来,为什么啊?

解决方案 »

  1.   

    怎么看都觉的你的m_pImagelist是空的,还没把bm加进去吧....
    m_pImagelist.Add(&bm,&bm);
      

  2.   

    有的m_pImagelist.Add(bm, RGB(0, 0, 0));
    不好意思,少贴了一句?
    而且还设置了LVS_EX_SUBITEMIMAGES也没有用?
    真是弄不懂
      

  3.   

    把这句修改下 LVSIL_STATE 改为 LVSIL_SMALLm_list_callrecord.SetImageList(&m_pImagelist, LVSIL_SMALL);
      

  4.   

    是过了没有用!我还是自己画了想问下该怎么画一个bmp图片到指定的子项中呢?我重载了drawitem,而且已经知道在哪里画,但是不知道怎么画,哪位大虾教教我啊?
      

  5.   

    什么意思,怎么绘制位图吗?// This OnDraw() handler loads a bitmap from system resources,
    // centers it in the view, and uses BitBlt() to paint the bitmap
    // bits.void CBlat2View::OnDraw(CDC* pDC)
    {
       CBlat2Doc* pDoc = GetDocument();
       ASSERT_VALID(pDoc);   // load IDB_BITMAP1 from our resources
       CBitmap bmp;
       if (bmp.LoadBitmap(IDB_BITMAP1))
       {
          // Get the size of the bitmap
          BITMAP bmpInfo;
          bmp.GetBitmap(&bmpInfo);      // Create an in-memory DC compatible with the
          // display DC we're using to paint
          CDC dcMemory;
          dcMemory.CreateCompatibleDC(pDC);      // Select the bitmap into the in-memory DC
          CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp);      // Find a centerpoint for the bitmap in the client area
          CRect rect;
          GetClientRect(&rect);
          int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
          int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;      // Copy the bits from the in-memory DC into the on-
          // screen DC to actually do the painting. Use the centerpoint
          // we computed for the target offset.
          pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 
             0, 0, SRCCOPY);      dcMemory.SelectObject(pOldBitmap);
       }
       else
          TRACE0("ERROR: Where's IDB_BITMAP1?\n");
    }
      

  6.   

    我现在有个疑问!如果我在所有项的某一子项中画bmp位图,当删除某一行时,是否要重画所有其他项该列的位图呢?因为程序经常需要操作该列表,这样合不合理啊?