使用 24 位 BMP 和 CTabCtrl

问题描述 投票:0回答:1

我正在努力:

m_imgList.Create(32, 32, ILC_COLOR24 | ILC_MASK, 4, 4);

CBitmap bmp;
bmp.LoadBitmap(IDB_BMP_DATABASE_REPORT_VIEWER);
theApp.SetBitmapBackgroundAsMenuColour(bmp);

m_imgList.Add(&bmp, RGB(47, 47, 47));  // Replace with the correct transparent color

m_tabPreview.SetImageList(&m_imgList);
m_tabPreview.SetItemSize(CSize(0, 34));

我快到了,但是看:

enter image description here

似乎获得焦点的选项卡不一定具有正确的图标背景颜色。

我很困惑。


根据建议,我尝试使用 32 位 PNG 文件代替:

// Create the image list and load the bitmap
m_imgList.Create(32, 32, ILC_COLOR32, 4, 4);

CPngImage png;
png.Load(IDB_PNG_MAIN_TOOLBAR, AfxGetResourceHandle());
m_imgList.Add(static_cast<HICON>(png.Detach()));

m_tabPreview.SetImageList(&m_imgList);
m_tabPreview.SetItemSize(CSize(0, 34));

但我现在看不到任何图标。

visual-c++ mfc imagelist ctabctrl
1个回答
0
投票

这有效:

// Create the image list and load the bitmap
m_imgList.Create(32, 32, ILC_COLOR32, 4, 4);

CPngImage png;
png.Load(IDB_PNG_MAIN_TOOLBAR, AfxGetResourceHandle());

CBitmap bmp;
bmp.Attach(png.Detach());
m_imgList.Add(&bmp, nullptr);

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.