c – MFC工具栏图标的颜色深度越高

我想知道如何在MFC中制作一个使用24位或256色位图而不是可怕的16色位图的工具栏.

任何人都可以指出一些简单的代码方向吗?

谢谢

解决方法

发生这种情况的原因是MFC CToolbar类使用内部的图像列表,其初始化仅使用16种颜色.解决方案是创建我们自己的图像列表,并告诉工具栏使用它.我知道这将适用于256色,但是我没有用更高的位深度进行测试:

首先,从资源加载256色位图:

HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_BITMAP,LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS);
CBitmap bm;
bm.Attach(hBitmap);

接下来,创建一个256色图像列表并添加我们的位图:

CImageList m_imagelist.Create(20,20,ILC_COLOR8,4,4);
m_imagelist.Add(&bm,(CBitmaP*) NULL);

最后,我们需要告诉工具栏使用新的图像列表:

m_toolbar.GetToolBarCtrl().SetimageList(&m_imagelist);

VS2008中的新MFC版本也可能解决了这个问题,因为我知道许多UI元素已被更新.我还没有尝试使用它,所以我不能确定.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...