为什么在CToolBar中使用高深度颜色的禁用按钮只是灰色框

Why are disabled buttons using high depth colour in CToolBar are just grey boxes?

本文关键字:按钮 颜色 灰色 深度 CToolBar 高深度 为什么      更新时间:2023-10-16

我遵循了这个问题的步骤:更高的颜色深度为MFC工具栏图标?

代码可以工作。但我有另一个问题-任何禁用按钮只是灰色的盒子。一旦它们被启用,它们就会像它们应该的那样。

我怀疑CToolBar不知道如何使所提供的图像变灰-有人可以帮助吗?

CToolBar实际上最多接受三个图像列表,每个图像列表处理按钮的正常,禁用和突出显示状态。

完成我需要的-只是正常和禁用按钮状态。我需要两张图片。一个有正常颜色的图标,另一个有灰色的图标。

将图像作为位图资源添加到您的项目中-修改并注意id

创建两个图像列表并相应地设置它们:(m_wndToolBar是我项目中的工具栏)

CImageList imgListActive;
CImageList imgListDisabled;
/* Load your CImageLists */
m_wndToolBar.GetToolBarCtrl().SetImageList(&imgListActive);
m_wndToolBar.GetToolBarCtrl().SetDisabledImageList(&imgListDisabled);

设置工具栏的突出显示版本:

CImageList imgListHighlighted;
/* Load your CImageList */
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&imgListHighlighted);

等。瞧!

通常需要做两件事来获得高颜色按钮和正确的灰色图像:

  1. 总是为VisualStudio之外的工具栏编辑。bmp文件。
  2. 使用调用CMFCToolBar::AddToolBarForImageCollection(IDR_MAINFRAME)将图像添加到MFC;在你的InitInstance()实现中

不幸的是,这也意味着您必须直接在应用程序的.rc资源文件中编辑工具栏定义。