如何在 MFC 中将图像添加到 CListCtrl

Posted

技术标签:

【中文标题】如何在 MFC 中将图像添加到 CListCtrl【英文标题】:How to add Images to CListCtrl in MFC 【发布时间】:2014-03-20 11:08:39 【问题描述】:

如何在 MFC 中将图像添加到 ClistCtrl?我试过了,发现还是挺难的。

我使用CImageList 添加图像,然后将其传递给CListCtrl。可以提供一些样品吗?

m_sentToCListCtrl.InsertColumn(0, _T("Item Name"), LVCFMT_LEFT,nColInterval*3);     
m_sentToCListCtrl.InsertColumn(1, _T("Value"),LVCFMT_LEFT, nColInterval);
m_sentToCListCtrl.InsertColumn(2, _T("Time"), LVCFMT_LEFT, rect.Width()-4*nColInterval);
ListView_SetExtendedListViewStyle(m_sentToCListCtrl.m_hWnd,LVS_EX_CHECKBOXES );

// Create 256 color image lists     
HIMAGELIST hSentToList =ImageList_Create(84,71, ILC_COLOR8 |ILC_MASK , 8, 1);
m_sentToImageList.Attach(hSentToList);

【问题讨论】:

【参考方案1】:

您需要在创建CImageList 后添加一些位图。像这样的:

m_myImageList.Create(84,71, ILC_COLOR8 |ILC_MASK , 8, 1);

CBitmap bm;
bm.LoadBitmap(IDB_BITMAP1);
m_myImageList.Add(&bm, RGB(0, 0, 0));
bm.LoadBitmap(IDB_BITMAP2);
m_myImageList.Add(&bm, RGB(0, 0, 0));

然后,将其附加到CListCtrl

m_sentToCListCtrl.SetImageList(&m_imageList, LVSIL_SMALL);

最后,您使用InsertItem 方法将项目添加到您的CListCtrl

LVITEM lvItem;
lvItem.iItem = 0;
lvItem.iImage = 0;    // image index that refers to your image list
lvItem.pszText = L"Item 1";
lvItem.mask = LVIF_TEXT;

m_sentToCListCtrl.InsertItem(&lvItem);

有关更多信息,请参阅CListCtrl documentation。也有例子。

【讨论】:

插件:如果您的资源中预加载了 bmp,则可以跳过 imagelist.add 并执行以下操作: m_myImageList.Create( IDB_TOOLBAR256, 15, 10, RGB( 0, 0, 0 ) ); m_sentToCListCtrl.SetImageList(&myImageList, LVSIL_NORMAL);。这都记录在在线资源中。

以上是关于如何在 MFC 中将图像添加到 CListCtrl的主要内容,如果未能解决你的问题,请参考以下文章

关于CListCtrl和CTreeCtrl的状态图像的问题 相当初级 MFC高手进来

使用 MFC 的 YouTube 下载器

是否可以在没有 MFC 的情况下使用 CListCtrl

如何在 MFC CListCtrl 中实现“点击并按住”行为?

MFC CListCtrl 将一个列表的选中项添加到另一个列表

如果任何列中不需要图像/图标,MFC CListCtrl是否合适?