我不确定为什么在向 CListCtrl(或 ListView 控件)添加图标时出现黑色轮廓?
我这样加载它:
//HICON hIcon;
LoadIconWithScaleDown(theApp.m_hInstance, MAKEINTRESOURCE(Icon_ID), 15, 15, &hIcon);
然后我这样创建我的图像列表:
//CImageList iml;
iml.Create(15, 15, ILC_COLOR32, numberIcons, 0);
iml.Add(hIcon);
首先准备 ListView :
//CListCtrl lst;
lst.SetExtendedStyle(LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT |
LVS_EX_LABELTIP | LVS_EX_HEADERDRAGDROP | LVS_EX_SUBITEMIMAGES);
lst.ModifyStyle(0, LVS_SHOWSELALWAYS);
图标显示在列表的子项中:
int nInd = lst.InsertItem(c, L"Main label");
lst.SetItem(nInd, nSubitemIndex, LVIF_TEXT | LVIF_IMAGE, L"2 files", nIconInd, 0, 0, 0);
那我做错了什么?
附言。我在具有 32 位真彩色显示设置的 Windows 8.1 上运行了这个测试。
虽然图标本身是一个 256 色图像,因为我看不出有任何理由在一个带有 alpha channel 的 32 位图标上浪费空间来实现如此小的尺寸和简单的设计:
最佳答案
LVS_EX_FULLROWSELECT
有 transparency issues on XP ,您可能会遇到这种情况。您可能必须将图像所有者绘制到 ListView 上以保持透明度。或者,将图像加载到一个图像列表中,然后将背景颜色与 ListView 的颜色匹配的图像拷贝渲染到单独的图像列表,然后将第二个图像列表与 ListView 一起使用。
关于c++ - 为什么显示 ListView 图标时背景变黑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269418/