CMCardApp *pApp=(CMCardApp *)AfxGetApp();
CImageList m_iconList; m_iconList.Create(16,16,ILC_COLOR16,2,2);

m_iconList.Add(pApp->LoadIcon(IDI_ICON1));
m_iconList.Add(pApp->LoadIcon(IDI_ICON2));
m_iconList.Add(pApp->LoadIcon(IDI_ICON3));
m_iconList.Add(pApp->LoadIcon(IDI_ICON4));         m_ctlMainList.SetImageList(&m_iconList,LVSIL_SMALL);         m_ctlMainList.AddItem(1,1,"aaa",1);当ListCtrl 控件显示图象时,图象背景是黑色的而不是透明色,我该如何设置呢?
图标原来是透明的.
   

解决方案 »

  1.   

    我也想这么干,只是ListCtrl颜色变化了又该如何,如何设置图标背景为透明的呢?
      

  2.   

    应该是改Create中的参数ILC_COLOR16
    具体参见MSDN
      

  3.   

    再Create中的参数中再加一个参数,ILC_MASK
      

  4.   

    你可以看看CImageList的Create()函数其中有个函数有图标遮照的参数,设置上你的参数就可以了
      

  5.   

    没办法了,ILC_COLOR16|ILC_MASK 都不行m_iconList.Create(16,16,ILC_COLOR16|ILC_MASK,2,2);怎办?
      

  6.   

    From MSDNint Add( CBitmap* pbmImage, COLORREF crMask );crMaskColor used to generate the mask. Each pixel of this color in the given bitmap is changed to black and the corresponding bit in the mask is set to one.其实就是这样
    HIMAGELIST hList = ImageList_Create(30,22, ILC_COLOR32 |ILC_MASK , 8, 1);
    m_cImageListNormal.Attach(hList);CBitmap cBmp;
    cBmp.LoadBitmap(IDB_IMAGES_NORMAL);
    m_cImageListNormal.Add(&cBmp, RGB(255,0, 255));
    cBmp.DeleteObject();
    m_lstContacts.SetImageList(&m_cImageListNormal, LVSIL_SMALL);关键在Add(&cBmp, RGB(255,0, 255));
    想我的Icon背景是纯红的,在Add后面那个参数添RGB(255,0, 255)就搞定了
    同理亦然
      

  7.   

    加 ILC_MASK 就对了,是我的DLL 没有从新编译,这就给分