MFC CImageList 图像列表怎么添加图标图像,我的添加不上图标图像不显示,怎么解决?

SUN 20 信誉分
2025-04-19T11:24:41.63+00:00

屏幕截图 2025-04-19 192359

CImageList pImageList, m_StatusImage;

if (pImageList.GetSafeHandle() == NULL)

{

pImageList.Create(32, 32, ILC_COLOR8, 0, 4);

pImageList.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));

list.SetImageList(&pImageList, LVSIL_SMALL);

list.SetImageList(&pImageList, LVSIL_SMALL);

}

if (m_StatusImage.GetSafeHandle() == NULL)

{

Image.Attach(hbmp);

Image.LoadBitmap(IDB_BITMAP1);

Image.GetBitmap(&ImageInfo);

m_StatusImage.Create(18, ImageInfo.bmHeight, ILC_COLOR16 | ILC_MASK, 0, 0);

m_StatusImage.Add(&Image, RGB(255, 0, 255));

}

list.SetImageList(&m_StatusImage, LVSIL_SMALL);

ASSERT(list.GetImageList(LVSIL_SMALL) == &m_StatusImage);

list.SetImageList(&m_StatusImage, LVSIL_NORMAL);

// Replace the line causing the error with the following code:

list.SetImageList(&m_StatusImage, LVSIL_NORMAL);

LV_ITEM lvItem;

ZeroMemory(&lvItem, sizeof(LV_ITEM));

lvItem.mask = LVIF_TEXT |LVFIF_STATE|LVIF_IMAGE;

lvItem.iItem = 1; // 插入到第一个位置

lvItem.iSubItem = 0;

lvItem.pszText = _T("示例文本");

lvItem.iImage =0; // 使用图像列表中的第一个图像索引(通常是从0开始计数)

m_list.InsertItem(&lvItem);

int index = list.InsertItem(0, _T("Item Text"));

list.SetItem(index, 0, LVIF_IMAGE, NULL, 0, index, 0, 0, NULL);

pImageList1 = new CImageList();

pImageList1->Create(32, 32, ILC_COLOR32 | ILC_MASK, 5, 5); // 创建图像列表,例如大小16x16,有5个备用空间

pImageList1->Add(AfxGetApp()->LoadIcon(IDI_ICON1)); // 假设IDB_IMAGE1是图像资源的ID

LV_ITEM lvItem1;

ZeroMemory(&lvItem, sizeof(LV_ITEM));

lvItem.mask = LVIF_TEXT | LVFIF_STATE | LVIF_IMAGE;

lvItem.iItem = 1; // 插入到第一个位置

lvItem.iSubItem = 0;

lvItem.pszText = _T("示例文本");

lvItem.iImage = 0; // 使用图像

m_list.SetImageList(pImageList1, LVSIL_SMALL);

m_list.InsertItem(&lvItem1);

C++
C++
一种通用的高级编程语言,作为 C 编程语言的扩展而创建,除了用于低级别内存操作的功能外,还具有面向对象、泛型和功能性等特点。
180 个问题
0 个注释 无注释
{count} 票

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。