Я не уверен, почему я получаю этот черный контур, когда я добавляю значок в CListCtrl (или элемент управления представления списка)?
Я загружаю это так:
//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);
сначала отображается список:
//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);
Так что я делаю не так?
PS. Я выполнил этот тест на своей Windows 8.1 с настройкой 32-битного цветного дисплея.
Сам значок, тем не менее, представляет собой 256-цветное изображение, поскольку я не вижу смысла тратить место на 32-разрядный значок с альфа-каналом для такого небольшого размера. & простой дизайн:
LVS_EX_FULLROWSELECT
имеет вопросы прозрачности на XP, Вы, вероятно, столкнулись с этим. Возможно, вам придется нарисовать изображения владельца в виде списка, чтобы сохранить прозрачность. Или загрузите изображения в один список изображений, затем визуализируйте копию изображений с цветом фона, соответствующим цвету представления списка, в отдельный список изображений, а затем используйте второй список изображений с представлением списка.
Может быть, вода под мостом к настоящему времени, но я нашел настройки глубины цвета 8 бит в моем оскорбительном списке изображений. Установка его в 32 привела к прозрачности, работающей как ожидалось …
Проверьте эту тему здесь
Получение альфа-смешивания для работы с CImageList
Добавление этой строки одним файлом C ++ сделало свое дело:
enter code here
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
Даже не спрашивай … но мне понадобилось много времени, чтобы выяснить это