256色工具栏无法显示
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




