在CToolBar对象中使用PNG时出现问题

Issue when using PNGs into CToolBar object

本文关键字:问题 PNG CToolBar 对象      更新时间:2023-10-16

我正试图将一个CImageList插入一个名为m_wndUtilBarCToolBar对象中。我使用以下代码添加所有图像:

CImageList imageList;
CBitmap bitmap;
COLORREF crMask = RGB(192, 192, 192);
CSize button, button_img;
button.cx = 39; 
button.cy = 39; 
button_img.cx = 32; 
button_img.cy = 32;
m_wndUtilBar.SetSizes(button, button_img);
imageList.Create(button_img.cx, button_img.cy, ILC_COLOR32 | ILC_MASK, 18, 1);
LoadBitmapFromPNG(IDB_PNG_UP, bitmap);
imageList.Add(&bitmap, crMask);
bitmap.Detach();
.
.
. // adding more images into the list
.

然后我将列表添加到对象中,如下所示:

m_wndUtilBar.GetToolBarCtrl().SetImageList(&imageList);
imageList.Detach();

我使用的所有图像都是项目中包含的资源,不是位图,而是PNG(我这么说是因为我认为这就是问题所在(。

一旦我运行了应用程序,一切都很好。显示所有图像,并且按钮工作正常。然而,当我禁用其中一个按钮时,这个按钮的图像显示为已启用(没有典型的灰色禁用掩码(,我不知道为什么。

有人能帮我吗?我不知道该怎么做才能将禁用效果应用于禁用按钮的图像。

更新1

我看到禁用效果只出现在图像的边界上,所以我认为该效果是应用的,然而,该效果并没有应用在PNG内部。

您可能还需要为禁用状态提供一个png图形。

来自文件:

在工具栏控制中使用图像列表

您需要使用SetDisabledImageList((和SetHotImageList(。