本帖最后由 fendouzhe 于 2013-03-26 14:34:12 编辑

解决方案 »

  1.   

    代码:
    void CMainFrame::CreateMyToolBar3()
    { m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_RIGHT | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); const int nSize = 2;
    UINT arr[nSize];
    for (int i = 0; i < nSize; i++)
    {
    arr[i] = IDTB_BUTTON+i;
    }
    m_myToolBar.SetButtons(arr, nSize);
    m_myToolBar.SetWindowText(_T("My ToolBar")); CBitmap bm;
    bm.LoadBitmap(IDB_BITMAP1);
    m_imageList.Create(16,16,ILC_COLOR32|ILC_MASK,0,0);      
    m_imageList.Add(&bm,RGB(0,0,0));
    m_imageToolbar.CreateFromImageList(m_imageList);
    m_myToolBar.SetSizes(CSize(16,16),CSize(16,16));
    m_myToolBar.SetUserImages(&m_imageToolbar);
    for (int i = 0; i < nSize; i++)
    {
    m_myToolBar.SetButtonInfo(i, IDTB_BUTTON+i, TBSTYLE_BUTTON, i+1);//我想从第二个位置开始取位图图片。
    }
    }
    通过这种方式加载的位图并不是IDB_BITMAP1,而是系统默认工具栏中的位图,因为SetUserImages是静态函数,难道在别的地方对我的设置进行了更改?
      

  2.   

    “SetUserImages” 自己写的 ?
    看看代码
      

  3.   

    SendMessage(hWndToolbar,TB_CHANGEBITMAP ,IDM_XXXX,x);IDM_XXXX 是 某按钮的 命令 ID
    x 是 当前 imagelist 里 有 的 iBitmap。
      

  4.   

    请问 IDTB_BUTTON是什么啊 怎么定义的 有 IDTB_BUTTON+i这种定义方法么