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

发布于 2024-11-27 02:23:07 字数 268 浏览 0 评论 0原文

我已经按照这个问题的步骤进行操作: MFC 工具栏图标具有更高的颜色深度?

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

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

提前致谢。

I've followed the steps from this question:
Higher color depth for MFC toolbar icons?

The code works. But I have another problem - any disabled buttons are just grey boxes.
Once they are enabled - they are exactly as they should be.

I suspect that the CToolBar doesn't know how to grey out the supplied images - can anyone help?

thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

满身野味 2024-12-04 02:23:07

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

瞧!

CToolBar actually accepts up to three imagelists each to handle the normal, disabled and highlighted states of the button.

To accomplish what I need - just normal and disabled button states. I need two images. One with normal coloured icons and the other with greyed out icons.

Add the images as Bitmap resources to your project - amend and make note of the IDs

Create two imagelists and set them accordingly: (m_wndToolBar is the toolbar in my project)

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

To set the highlighted versions of the toolbar:

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

et voila!

帅气称霸 2024-12-04 02:23:07

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

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

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

Usually two things are necessary to get the high color buttons and the correctly greyed out images:

  1. Always edit the .bmp file for the toolbar outside of VisualStudio.
  2. Add the images to MFC using a call to CMFCToolBar::AddToolBarForImageCollection(IDR_MAINFRAME); in your InitInstance() implementation.

Unfortunately this also means that you have to edit the Toolbar definition directly in the .rc resource file of the application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文