none
我在MFC中创建一个位图工具栏,为何加载的图标显示为黑块 RRS feed

  • 问题

  • 我创建了一个基于对话框的工程,并想给他添加一个位图工具栏。创建一个位图,尺寸为64*16,ID为IDB_COLOR。然后再对话框中添加CToolBar m_toolbar,最后在OnInitDialog中添加如下代码。

    m_toolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

    UINT lpIDArray[]={IDR_TB_NEW,IDR_TB_UP,IDR_TB_DOWN,ID_TB_T};
    int nIDCount = sizeof(lpIDArray)/sizeof(UINT);

    VERIFY(m_toolbar.SetButtons(lpIDArray,nIDCount));
    m_toolbar.SetSizes(CSize(40,40),CSize(16,16));
    VERIFY(m_toolbar.LoadBitmap(IDB_COLOR));

    最后发现,工具栏出现了,大小也是正常的,但是所有的图片都是黑色方块,为何?

    PS:我用CImageList的方法是可以正常显示出来的。


    • 已编辑 zamely 2015年8月26日 14:09
    2015年8月26日 14:04

全部回复

  • 代码没什么问题,如果您的图片资源没有问题的话,应该是可以的。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2015年8月27日 1:21
    版主
  • 你好,你好像也是CSDN的版主咯~是啊,我的图片用以下这段代码是可以显示的,我调了几天也没发现问题所在。google发现以前也有人遇到该问题,似乎没有解决方案。你可以给联系方式我,我发图片你你帮我调调么?

    UINT lpIDArray[]={IDR_TB_NEW,IDR_TB_UP,ID_SEPARATOR,IDR_TB_DOWN,ID_TB_T}; //注意这里的是控件的ID,并非TBBS_BUTTON,这时工具栏出现了
    int nIDCount = sizeof(lpIDArray)/sizeof(UINT);

    m_imgColor.Create(16,16,TRUE | ILC_COLOR24,10,0);
    CBitmap bm;
    bm.LoadBitmap(IDB_COLOR);
    m_imgColor.Add(&bm,(CBitmap*)(NULL));
    bm.Detach();
    m_toolbar.GetToolBarCtrl().SetImageList(&m_imgColor);
    m_toolbar.SetButtons(lpIDArray,nIDCount); //在该函数会根据图片数量添加按钮
    m_toolbar.SetSizes(CSize(40,40),CSize(16,16)); //为何大小也不能改变

    2015年8月28日 3:10