我用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格式的,前者是彩色的,后者是黑白的
我的问题是程序运行过成中,工具栏图标会散开如下图所示本来的工具栏图标如下所示我也查了很多网上有关的说明,没发现问题出在那,关键是图标散开是不定期的,是偶尔才发生的,没有规律性可找
请各位高手帮忙给看看,分不够可再加

解决方案 »

  1.   

    忘了说了 此段代码是加在MainFrame的OnCreate函数中的有什么不清楚的可留言,我会时刻关注
      

  2.   

    file:///D:/1.bmp
    file:///D:/2.bmp
      

  3.   

    图片贴到csdn的bolg里试试看//没测试过,呵呵
      

  4.   

    http://hi.baidu.com/%B4%A5%C3%D7%C9%FA%C7%E9/album/%C4%AC%C8%CF%CF%E0%B2%E1
    这是我百度的相册地址 可以到这里看一下
    就两张图片 就是我想贴上去的
      

  5.   

    我的问题是程序运行过成中,工具栏图标会散开如下图所示  本来的工具栏图标如下所示
    http://p.blog.csdn.net/images/p_blog_csdn_net/queshangxintou/376113/o_2.JPG
      

  6.   

    多谢datoucaicai
    你的办法可行
      

  7.   

    可是怎么会散成那个样子呢?
    没碰到过如果可以的话,你做个例程发我邮箱[email protected]
    调试看看
      

  8.   

    to:happyparrot
    总共27个图标 是24*24的
    长度应该是27*24
      

  9.   

    应该是你的工具栏的某个图标过宽造成的。默认情况下各个图标是等宽的。
    在你生成的exe程序上,将鼠标放在工具栏的某个图标上面,如果浮起的矩形框较宽的话,那应该就是这种原因。
      

  10.   

    与贴图原因不大,能否将MainForm部分源码提供一下,我们一起来分析一下.
      

  11.   

    to:ek78986 
    mainframe 中的源代码基本上没什么改变,就是添加了以上的那些代码你留个邮箱我可以给你发个例程
      

  12.   

    //创建图像列表,向图像列表中添加图标
    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);