当前位置:  开发笔记 > 编程语言 > 正文

MFC工具栏图标的颜色深度更高?

如何解决《MFC工具栏图标的颜色深度更高?》经验,为你挑选了1个好方法。

我想知道如何在MFC中使用24位或256色位图而不是可怕的16色位图.

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

谢谢



1> Stu Mackella..:

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

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

HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
    MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_BITMAP,
    0,0, 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元素已经更新.我还没有尝试过使用它,所以我无法确定.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有