CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

256色工具栏无法显示

楼主budfly()2004-09-03 17:55:18 在 VC/MFC / 界面 提问

CMainFrame::OnCreate中的代码如下:  
  if   (!m_wndToolBar.CreateEx(this,     TBSTYLE_FLAT,   WS_CHILD   |   WS_VISIBLE   |   CBRS_TOP  
  |   CBRS_TOOLTIPS   )   ||  
  !m_wndToolBar.LoadToolBar(IDR_SYSTEM))  
  {  
  TRACE0("Failed   to   create   toolbar\n");  
  return   -1;             //   fail   to   create  
  }  
  m_ilToolBar.Create(32,   32,   TRUE   |   ILC_COLOR8,   5,   0);  
  m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar);  
  其中IDR_SYSTEM是我做的256色工具栏的ID,有5个32×32×256的图标按钮。程序运行后只显示一个分隔符,其余都是灰色。  
  我用逐个ICON装载的方法:  
  HICON   hIcon   =   NULL;  
  hIcon   =   (HICON)::LoadImage(::AfxGetInstanceHandle(),    
  MAKEINTRESOURCE(IDI_ICON1),   IMAGE_ICON,   32,   32,   0);  
  m_ilToolBar.Add(hIcon);  
  结果也差不多。请问是什么原因?  
  问题点数:20、回复次数:4Top

1 楼Gr177(沉默的是人)回复于 2004-09-03 17:59:36 得分 5

你需要指定TB_SETHOTIMAGELIST、TB_SETDISABLEDIMAGELIST等状态~~~  
  指定透明色!!!!  
   
   
   
  //////////////////////////////////////////////////////////////////////////  
  //   Set   up   hot   bar   image   lists.  
  CImageList imageList[2];  
  CBitmap bitmap[2];  
   
  //   Create   and   set   the   normal/hot   toolbar   image   list.  
  bitmap[0].LoadBitmap(IDR_MAINFRAME);  
  imageList[0].Create(16,   15,   ILC_COLORDDB|ILC_MASK,   13,   1);    
  imageList[0].Add(&bitmap[0],   0x00c8d0d4);  
  m_wndToolBar.SendMessage(TB_SETIMAGELIST,   0,   (LPARAM)imageList[0].m_hImageList);  
  m_wndToolBar.SendMessage(TB_SETHOTIMAGELIST,   0,   (LPARAM)imageList[0].m_hImageList);  
  imageList[0].Detach();  
  bitmap[0].Detach();  
   
  //   Create   and   set   the   disable   toolbar   image   list.  
  bitmap[1].LoadBitmap(IDB_BITMAP1_COLD);  
  imageList[1].Create(16,   15,   ILC_COLORDDB|ILC_MASK,   13,   1);  
  imageList[1].Add(&bitmap[1],   0x00c8d0d4);  
  m_wndToolBar.SendMessage(TB_SETDISABLEDIMAGELIST,   0,   (LPARAM)imageList[1].m_hImageList);  
  imageList[1].Detach();  
  bitmap[1].Detach();              
  Top

2 楼budfly()回复于 2004-09-03 20:15:24 得分 0

加了你的前半断程序:  
  //   Create   and   set   the   normal/hot   toolbar   image   list.  
  CBitmap bitmap;  
  bitmap.LoadBitmap(IDR_SYSTEM);  
  m_ilToolBar.Create(32,   32,   TRUE   |   ILC_COLOR8,   5,   0);  
  m_ilToolBar.Add(&bitmap,   0x00c8d0d4);  
  m_wndToolBar.SendMessage(TB_SETIMAGELIST,   0,   (LPARAM)m_ilToolBar.m_hImageList);  
  m_wndToolBar.SendMessage(TB_SETHOTIMAGELIST,   0,   (LPARAM)m_ilToolBar.m_hImageList);  
  m_ilToolBar.Detach();  
  bitmap.Detach();  
  m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar);  
  但显示的结果还是一样。 Top

3 楼Leanderhe(家俊)回复于 2004-09-04 01:24:57 得分 10

上网下载个做真彩工具栏的类,再加一个工具条制作的工具:Visual   Toolbar工具  
  http://dev.csdn.net/article/26/26230.shtmTop

4 楼coolstar14(寒星溪月)回复于 2004-09-04 13:41:12 得分 5

其余都是灰色   可能是没指定消息映射吧.另外,一般   256色的工具栏好像还要做一个灰度的工具栏以备非使能状态使用.VC给自己产生的一般是没法用的,看起来比较惨.Top

相关问题

  • 工具栏上button的文字无法显示
  • 在工具栏上如何显示一个256色的图标?
  • 工具栏的显示?
  • 请问如何在工具栏中显示真彩色的图标?
  • 工具栏上怎么显示大于256色的位图,如24位,32位
  • sdk开发的IE工具栏插件无法完整显示工具栏的图片,请高手帮忙调试,高分感谢
  • 怎样显示和隐藏工具栏
  • 如何隐藏/显示工具栏?
  • 如何隐藏和显示工具栏?
  • 如何显示CORELDRAW9的工具栏

关键词

  • toolbar
  • iltoolbar
  • 工具栏
  • wndtoolbar
  • imagelist
  • ilc
  • himagelist
  • x00c
  • sethotimagelist
  • bitmap

得分解答快速导航

  • 帖主:budfly
  • Gr177
  • Leanderhe
  • coolstar14

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo