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

时间:2011-08-01 12:54:53

标签: c++ visual-c++ mfc

我已按照此问题中的步骤操作: Higher color depth for MFC toolbar icons?

代码有效。但我有另一个问题 - 任何禁用的按钮只是灰色框。 一旦启用它们 - 它们就应该是它们应该的。

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

提前感谢。

2 个答案:

答案 0 :(得分:3)

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);

et voila!

答案 1 :(得分:0)

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

  1. 始终编辑VisualStudio外部工具栏的.bmp文件。
  2. 使用对CMFCToolBar :: AddToolBarForImageCollection(IDR_MAINFRAME)的调用将图像添加到MFC;在你的InitInstance()实现中。
  3. 不幸的是,这也意味着您必须直接在应用程序的.rc资源文件中编辑工具栏定义。