gpt4 book ai didi

c++ - CImageList 和 CComboBoxEx 限制为 16 个透明图标

转载 作者:行者123 更新时间:2023-11-30 05:18:37 26 4
gpt4 key购买 nike

您可以在 CComboBoxEx 中使用的透明图标似乎有 16 个限制。我有以下伪代码:

m_ImageList.Create(16,16,ILC_COLOR32,TF_COUNT,1);

for (int nImage = 0; nImage < TF_COUNT; nImage++)
{
m_ImageList.Add(phIcons[nImage]);
DestroyIcon(phIcons[nImage]);
}
m_cmbAction.SetImageList(&m_ImageList);

前 16 个图标没问题 - 下面的图标都有黑色背景而不是透明度。与 CTreeCtrl 或 CListCtrl 关联的相同代码和图像列表工作得很好。有什么想法吗?

编辑:我正在使用 Visual Studio 2013

最佳答案

作者在 ZIP 文件中发布了他的代码:

m_ImageList.Create(16, 16, ILC_COLOR32, TF_COUNT, 1);

for (int nIcon=0; nIcon < TF_COUNT; nIcon++)
{
m_ImageList.Add(m_hIcon);
}
m_ComboBox.SetImageList(&m_ImageList);

COMBOBOXEXITEM cbi;
cbi.mask = CBEIF_IMAGE | CBEIF_INDENT | CBEIF_OVERLAY |
CBEIF_SELECTEDIMAGE | CBEIF_TEXT | CBEIF_LPARAM;
int nItemCount = 0;


for (int nText = 0; nText < TF_COUNT; nText++)
{
CString strItem;
strItem.Format(_T("Item %d"),nText);
cbi.iItem = nItemCount;
cbi.pszText = (LPTSTR)(LPCTSTR)strItem;
cbi.cchTextMax = strItem.GetLength();
cbi.iImage = nText;
cbi.iSelectedImage = nText;
cbi.iOverlay = nText;
cbi.iIndent = 0;
cbi.lParam = nText;
m_ComboBox.InsertItem(&cbi);
nItemCount++;
}

在这段代码中,错误是CBEIF_OVERLAYcbi.iOverlay = nText。叠加图像是在另一个图像上透明绘制的图像(这样,您可以组合两个图标)。在作者的代码中,这显然不是本意。

最后,图像列表允许 only up to 15 overlay icons .这就解释了神奇的 16。

关于c++ - CImageList 和 CComboBoxEx 限制为 16 个透明图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41594160/

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