VC,MFC的对话框应用程序中怎么改变工具栏的背景?大家帮帮忙,多谢了!!!

解决方案 »

  1.   

    SetBkMode不是CToolBar类的成员函数啊
      

  2.   

    子类化   应该没问题
    [/Quote]子类化?怎么做,有具体的例子吗?我是新手,不太懂啊?
      

  3.   

    http://www.vckbase.com/document/viewdoc/?id=241
      

  4.   

    子类化toolbar的一个例子
    http://www.codeproject.com/KB/toolbars/truecolortoolbar.aspx
    子类化控件的介绍
    http://blog.csdn.net/woshishushangdezhu/archive/2009/02/26/3940973.aspx
      

  5.   

    http://221.199.150.103/jsj/Html/vc/wen/vcwen08.htm
      

  6.   

    答一楼的话:
    工具栏其实是放在一个叫ReBar的容器里的
    所以你平时看到的空的那部分其实是ReBar的
    一个ReBar可以放好多个工具栏,有对齐的,也可以不对齐
    对工具栏设置的背景色是看不到的,被按钮遮挡了
    你必须定义ReBar的变量
    然后操作Rebar设置其背景颜色或图片
    并在框架的Create里将该ReBar替换默认的ReBar回答完毕,请结贴
      

  7.   


    你说的实例是在文档应用程序中的,而且是实现了真彩工具栏图标,我说的是工具条的背景,就像word中整个工具栏背景都是蓝色,就是这个蓝色的实现?
      

  8.   

    一、建立一个单文档项目 XXX;
    二、在CMainFrame类里添加变量如下
    CStatusBar  m_wndStatusBar;
    CToolBar    m_wndToolBar;
    CReBar      mReBar;//注意,这句是添加的变量三、在CMainFrame类的OnCreate里面添加
    if (!m_wndToolBar.CreateEx(this,...... ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
    TRACE0("Failed to create toolbar\n");
    return -1;      // fail to create
    }
            //上面是系统自己创建的,下面是需要添加的
    mReBar.Create(this);
    mReBar.AddBar(&m_wndToolBar);
    mReBar.RedrawWindow();
    REBARBANDINFO info;
    info.cbSize=sizeof(info);
    info.fMask = RBBIM_BACKGROUND;
    m_wndToolBar.ModifyStyle(0,0x8000);
    info.hbmBack =::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BBK));
    mReBar.GetReBarCtrl().SetBandInfo(0,&info);四、屏蔽掉浮动工具栏的代码,即将这三句代码注释掉
    //m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    //EnableDocking(CBRS_ALIGN_ANY);
    //DockControlBar(&m_wndToolBar);
     
    五、增加位图资源IDB_BBK,该资源将作为画刷填充ReBar;
      

  9.   

    试过了,在SDI中可用,可是到对话框应用程序中就不行了,原来能显示的工具栏,经过上面的修改后,不见了
      

  10.   

    同意,不过俺认为那是嵌一个frame。
      

  11.   


    老大,我想请教下,能否不重新创建CReBar,而直接采用系统自己的那个?还有,我用了你的方法试了下,结果两个ReBar重叠在了一起,效果不是很好!