如何使用CImageList

时间:2009-05-16 17:43:55

标签: mfc

我希望我的树视图控件显示一个旁边有文件夹图标的项目。 所以,我写了这段代码:

HBITMAP hFolderBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),_T("info.bmp"),IMAGE_BITMAP,20,20,LR_LOADFROMFILE|LR_CREATEDIBSECTION);

if(hFolderBitmap)
{
    cil.Create(20,20,ILC_COLOR32,0,5);

    bmp.FromHandle(hFolderBitmap);
    cil.Add(&bmp,RGB(255,0,255));
}

GetTreeCtrl().SetImageList(&cil,TVSIL_NORMAL);
hrootFolder = GetTreeCtrl().InsertItem(_T("Subscriptions"),0,0,TVI_ROOT);

但是,这不会在我的订阅标签旁边添加文件夹图标。它工作正常但不显示任何图像。

2 个答案:

答案 0 :(得分:0)

我用这个:

UINT uiBmpId = theApp.m_bHiColorIcons ? 
    IDB_MACROBROWSE_IMGLIST_HQ : IDB_MACROBROWSE_IMGLIST;

CBitmap bmp;
if( !bmp.LoadBitmap( uiBmpId ) )
{
    ASSERT( FALSE );
    return;
}

BITMAP bmpObj;
bmp.GetBitmap (&bmpObj);

UINT nFlags = ILC_MASK;
nFlags |= (theApp.m_bHiColorIcons) ? ILC_COLOR24 : ILC_COLOR4;

m_imageList.Create( 16, bmpObj.bmHeight, nFlags, 0, 0 );
m_imageList.Add( &bmp, RGB (255, 0, 255) );

GetTreeCtrl().SetImageList (&m_imageList, TVSIL_NORMAL);

答案 1 :(得分:0)

而不是使用:

bmp.FromHandle(hFolderBitmap);

我不得不使用:

bmp.Attach(hFolderBitmap);