gpt4 book ai didi

c++ - 为什么显示 ListView 图标时背景变黑?

转载 作者:行者123 更新时间:2023-11-28 00:27:25 24 4
gpt4 key购买 nike

我不确定为什么在向 CListCtrl(或 ListView 控件)添加图标时出现黑色轮廓?

enter image description here

我这样加载它:

//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 位图标上浪费空间来实现如此小的尺寸和简单的设计:

enter image description here

最佳答案

LVS_EX_FULLROWSELECTtransparency issues on XP ,您可能会遇到这种情况。您可能必须将图像所有者绘制到 ListView 上以保持透明度。或者,将图像加载到一个图像列表中,然后将背景颜色与 ListView 的颜色匹配的图像拷贝渲染到单独的图像列表,然后将第二个图像列表与 ListView 一起使用。

关于c++ - 为什么显示 ListView 图标时背景变黑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com