从clistctrl中删除图像

Remove image from CListCtrl

本文关键字:图像 删除 clistctrl      更新时间:2023-10-16

如何从clistctrl删除图像:

我正在尝试以下尝试:

LVITEM item;
item.mask = LVIF_TEXT;
item.iItem = rowIndex;
item.iSubItem = 0;
item.pszText = L"";
item.state = 0;
item.stateMask = 0;
item.iImage = -1;
item.lParam = 0;
listCtrl.InsertItem(&item);

我的clistctrl具有正确显示的图像列表。如何删除它?

尝试了以下方法:

  if (dataValue.at(0) == INVALID)
    {   
        listCtrl.InsertItem(rowIndex, L"", 0);
    }   
    else
    {
        LVITEM item = { 0 };
        item.mask = LVIF_TEXT | LVIF_IMAGE;
        item.iItem = rowIndex;
        item.pszText = L"Test";
        item.iImage = -1;
        listCtrl.SetItem(&item);
    }

如果要删除图像,则将LVIF_IMAGE添加到掩码中:

LVITEM item = { 0 };
item.mask = LVIF_IMAGE;
item.iItem = rowIndex;
item.iImage = -1;
listCtrl.SetItem(&item);

如果您不使用正确的掩码,则忽略相应的成员。

来自lvitem文档:

LVIF_IMAGE
iImage成员有效或必须设置。

LVIF_TEXT
pszText成员有效或必须设置

我需要的是在无效的情况下显示验证图标,并在有效情况下隐藏图标:

if (dataValue.at(0) == INVALID)
  {   
    listCtrl.InsertItem(rowIndex, L"");
  }   
else
  {
    listCtrl.InsertItem(rowIndex, L"", -1);
  }

隐藏图像的唯一方法是将无效的图像设置为-1为3rd param。

这很奇怪!