我用MFC框架做了一个多文档的程序,工具栏上的图是我用贴图贴上去的,是加在MainFrame添加我的代码的如下所示
CImageList imagelist;
CBitmap bitmap;bitmap.LoadBitmap(IDB_TOOLBAR_NOMAL);
imagelist.Create(24, 24, ILC_COLOR24 | ILC_MASK, 0, 1);
imagelist.Add(&bitmap, RGB(0,0,255));
m_wndTolBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imagelist.m_hImageList);
imagelist.Detach();
bitmap.Detach();
//
bitmap.LoadBitmap(IDB_TOOLBAR_DISABLE);
imagelist.Create(24, 24, ILC_COLOR24 | ILC_MASK, 0, 1);
imagelist.Add(&bitmap, RGB(0, 0, 255));
m_wndToolBar.SendMessage(TB_SETDISABLEDIMAGELIST, 0, (LPARAM)imagelist.m_hImageList);
imagelist.Detach();
bitmap.Detach();
其中IDB_TOOLBAR_NOMAL和IDB_TOOLBAR_DISABLE是我加载的工具栏图标,是bmp格式的,前者是彩色的,后者是黑白的
我的问题是程序运行过成中,工具栏图标会散开如下图所示本来的工具栏图标如下所示我也查了很多网上有关的说明,没发现问题出在那,关键是图标散开是不定期的,是偶尔才发生的,没有规律性可找
请各位高手帮忙给看看,分不够可再加
CImageList imagelist;
CBitmap bitmap;bitmap.LoadBitmap(IDB_TOOLBAR_NOMAL);
imagelist.Create(24, 24, ILC_COLOR24 | ILC_MASK, 0, 1);
imagelist.Add(&bitmap, RGB(0,0,255));
m_wndTolBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imagelist.m_hImageList);
imagelist.Detach();
bitmap.Detach();
//
bitmap.LoadBitmap(IDB_TOOLBAR_DISABLE);
imagelist.Create(24, 24, ILC_COLOR24 | ILC_MASK, 0, 1);
imagelist.Add(&bitmap, RGB(0, 0, 255));
m_wndToolBar.SendMessage(TB_SETDISABLEDIMAGELIST, 0, (LPARAM)imagelist.m_hImageList);
imagelist.Detach();
bitmap.Detach();
其中IDB_TOOLBAR_NOMAL和IDB_TOOLBAR_DISABLE是我加载的工具栏图标,是bmp格式的,前者是彩色的,后者是黑白的
我的问题是程序运行过成中,工具栏图标会散开如下图所示本来的工具栏图标如下所示我也查了很多网上有关的说明,没发现问题出在那,关键是图标散开是不定期的,是偶尔才发生的,没有规律性可找
请各位高手帮忙给看看,分不够可再加
解决方案 »
- 问题,CDialogBar里包含对话框对象,移动时不刷新
- 怎样根据出错的地址(如:0x00401082)找到出错的代码行?
- 请教喷墨打印机的程序控制问题,敬请关注,谢谢
- 急!为什么getfolderpath会出错
- 如何向别的程序的菜单发送消息?
- 怎样在vc下面实现远程调试,怎样设置,急急...在线等....
- 程序技巧问题
- 在按钮点击的位置上弹出pop menu?
- vs2005生成.exe 但无法启动调试 请教各位大大什么原因
- 这是什么原因?CImage对象加载PNG出错,能加载BMP。
- VC 里面_RecordsetPtr DataGrid碰到个问题 急,在线等
- 如果两对象属于同一个类,那么一个对象的construtor能调用另一个类的私有成员吗?
file:///D:/2.bmp
这是我百度的相册地址 可以到这里看一下
就两张图片 就是我想贴上去的
http://p.blog.csdn.net/images/p_blog_csdn_net/queshangxintou/376113/o_2.JPG
你的办法可行
没碰到过如果可以的话,你做个例程发我邮箱[email protected]
调试看看
总共27个图标 是24*24的
长度应该是27*24
在你生成的exe程序上,将鼠标放在工具栏的某个图标上面,如果浮起的矩形框较宽的话,那应该就是这种原因。
mainframe 中的源代码基本上没什么改变,就是添加了以上的那些代码你留个邮箱我可以给你发个例程
CImageList imagelist;
CBitmap bitmap;bitmap.LoadBitmap(IDB_TOOLBAR_NOMAL);
imagelist.Create(32, 32, ILC_COLOR24 | ILC_MASK, 0, 1);
imagelist.Add(&bitmap, RGB(0,0,255)); //创建工具栏
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
} m_wndToolBar.GetToolBarCtrl().SetImageList(&imagelist);
m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(40,40));
m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(30,30)); // TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);