解决方法
发生这种情况的原因是MFC CToolbar类使用内部的图像列表,其初始化仅使用16种颜色.解决方案是创建我们自己的图像列表,并告诉工具栏使用它.我知道这将适用于256色,但是我没有用更高的位深度进行测试:
首先,从资源加载256色位图:
HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_BITMAP,LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS); CBitmap bm; bm.Attach(hBitmap);
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元素已被更新.我还没有尝试使用它,所以我不能确定.
原文地址:https://www.jb51.cc/c/113001.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。