我在工具条中加入32x32的真彩图标,怎么执行后颜色就失真了,掉了不少,有没办法让加载上的图标不失真,图标我是COPY到工具条上的
解决方案 »
- 如何加快socket下载速度?
- 如何利用vc实现删除U盘效果
- 请问怎么安全关闭IOCP服务器???
- 命名管道,重叠方式指的是什么!.
- 如何使用word::Protect 方法?
- 请问用这个函数怎么显示bmp图片啊?SetDIBitsToDevice()
- 关于结构体的问题
- 大家好,我有个关于ATL的问题,就是我用atl做了一个控件在dll中,我想在win32中使用,怎么用呢?
- 网狐棋牌中 发牌动画的制作
- 2010Unicode环境下读取UTF8格式的txt文本,逐行读取内容,就大神给源码!
- <<<<<<<<==============|||||| 如何让视频回放窗口半透明|||||||==============>>>>>>>
- 如何实现在对话框中的操作使视图实时显示出来
CImageList m_TBIL; //工具条image list VERIFY(m_TB.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) &&
m_TB.LoadToolBar(IDR_MAINFRAME)); HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_BITMAP, 0,0, // cx,cy
LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );
CBitmap bmp;
bmp.Attach(hbm); // Create image list and set in toolbar.
// Must use ILC_COLOR8 for 256-color images!
m_TBIL.Create(43, 34, ILC_COLOR32, 13, 15);
m_TBIL.Add(&bmp, (CBitmap*)NULL);
m_TB.GetToolBarCtrl().SetImageList(&m_TBIL);
{
m_wndToolBar.CreateEx(this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
//创建图形列表
/* CImageList img; img.Create(IDB_BITMAP1, 32, 0, RGB(255, 0, 255));
m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach(); img.Create(IDB_BITMAP1, 32, 0, RGB(255, 0, 255));
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach();
*/
m_ilTB.Create(32, 32, TRUE | ILC_COLOR32, 4, 0);
HICON hIcon = NULL; hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON2), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON3), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON4), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON5), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON6), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_ICON7), IMAGE_ICON, 32, 32, 0);
m_ilTB.Add(hIcon);
m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilTB); //设置工具条按钮宽度最小、最大值
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(60, 90);//设置每个按钮的高度和宽度
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS); m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);
m_wndToolBar.SetButtons(NULL, 7);//按钮个数 // 创建每个按钮
CString str;
str="启动服务";
m_wndToolBar.SetButtonInfo(0, ID_SERVER_START, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonText(0, str);
m_wndToolBar.SetButtonInfo(1, ID_SERVER_CLOSE, TBSTYLE_BUTTON, 1);
str="关闭服务";
m_wndToolBar.SetButtonText(1, str); m_wndToolBar.SetButtonInfo(2, ID_ADD_GAME, TBSTYLE_BUTTON, 2);
str="游戏管理";
m_wndToolBar.SetButtonText(2, str); m_wndToolBar.SetButtonInfo(3, ID_MANAGE, TBSTYLE_BUTTON, 3);
str="网管管理";
m_wndToolBar.SetButtonText(3, str); m_wndToolBar.SetButtonInfo(4, ID_REGISTER, TBSTYLE_BUTTON, 4);
str="软件注册";
m_wndToolBar.SetButtonText(4, str); m_wndToolBar.SetButtonInfo(5, ID_SYSTEM, TBSTYLE_BUTTON, 5);
str="系统设置";
m_wndToolBar.SetButtonText(5, str); m_wndToolBar.SetButtonInfo(6, ID_APP_EXIT, TBSTYLE_BUTTON, 6);
str="退出系统";
m_wndToolBar.SetButtonText(6, str);
CRect rectToolBar;
//获取工具条按钮大小
m_wndToolBar.GetItemRect(0, &rectToolBar);
//设置工具条的按钮大小和图标大小
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(32,32));
}
然后在OnCreate中调用这个函数就行了,并且去掉系统生成的这段代码:
/* if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
*/