向ListView中添加ImageList,但每个Image是不确定的,要到添加Item时才能确定,请问怎么做?

解决方案 »

  1.   

    int InsertItem( int nItem, LPCTSTR lpszItem, int nImage );根据你的要求,填 nImage, 
    Index of the item’s image
      

  2.   

    创建肖像:
    //ФÏñ
    m_ImageList.Create(16, 16, FALSE, 3, 0 );
    m_ImageList.SetBkColor(RGB(108, 248, 254));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ImageOne));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ImageTwo));
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ImageThree));
    m_ImageList.SetOverlayImage(0, 2);
    m_ImageList.SetOverlayImage(1, 2);
    m_ImageList.SetOverlayImage(2, 2);
    GetListCtrl().SetImageList(&m_ImageList, LVSIL_SMALL);插入时:
    m_ImageList.InsertItem(nItem, StrName, nImage); //nImage为0,1,2分别与创建的肖像对应。
      

  3.   

    按照楼上的做法,你在create的时候,可以将最后一个参数置为非0,m_ImageList.Create(16, 16, FALSE, 3, 2 );//比如,你不确定的image有2个,你可以
    int index = m_ImageList.Add(你确定后的image);
    GetListCtrl().InsertItem(nItem, StrName, index );
      

  4.   

    use custom draw or virtual list
      

  5.   

    可能是我没讲明白吧,我的意思是,插入一个Item时,其nImage是一个索引值,这就需要我先把ImageList创建好,但创建ImageList时,根本不知道每个Image是什么样的.
      我现在的做法是,插入一个Item时,把原来的ImageList去掉,在ImageList中加入新的Image,再将新的ImageList加入到ListView中,再插入Item,但这样好象太繁了,有没有更好的方法啊?
      

  6.   

    use custom draw to draw image yourself
      

  7.   

    你把所有Image统统加入Imagelist,要插入Item时,选择不同的index添加不是很简单吗,如果有新的image,随时添加到imagelist中即可
      

  8.   

    Image可以有无限多个,只有插入时才知道啊。