问题:
将32位图标添加到CToolbar实例似乎无法正常工作
(图像质量变化)。
我遇到了与我的问题相关的WEB 2类主题:
奇怪的是文档中提到了“16种颜色”,而不是2 ^ 16种颜色, 所以我可能会错误地解释这些信息。
答案 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