CToolbar是否支持带32位图标的按钮?

时间:2014-01-29 09:40:21

标签: c++ user-interface mfc

问题:
将32位图标添加到CToolbar实例似乎无法正常工作 (图像质量变化)。

我遇到了与我的问题相关的WEB 2类主题:

奇怪的是文档中提到了“16种颜色”,而不是2 ^ 16种颜色, 所以我可能会错误地解释这些信息。

3 个答案:

答案 0 :(得分:2)

如果查看CToolBar::LoadBitmap,您会看到使用AfxLoadSysColorBitmap加载位图。快速查看该功能可以看出颜色表固定为16种颜色。

// make copy of BITMAPINFOHEADER so we can modify the color table
const int nColorTableSize = 16;

与MFC中的大多数内容一样,如果你覆盖了足够多的方法,你可能可以使它加载一个32位的位图但是你可能已经在其他地方看到了你真的想要使用{{1不仅支持更高的颜色深度,还支持许多其他改进的功能。

答案 1 :(得分:1)

很长一段时间以来,CToolBar都通过图像列表支持图像。

所以加载默认的16色图像是工具栏资源的一部分,然后在任何颜色深度创建图像列表,然后通过包含的CToolBarCtrl将它们分配到工具栏。

if (m_toolbar.LoadToolBar(IDR_MAINFRAME))
{
   // create imagelist
   if (m_imageList.Create(....))
   {
      m_toolbar.GetToolBarCtrl().SetImageList(&m_ilNormal);
   }
}

答案 2 :(得分:0)

可能你应该使用CMFCToolBar:http://msdn.microsoft.com/ru-ru/library/bb984480.aspx