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

liweisdut 2010-06-17 09:33:19
VC,MFC的对话框应用程序中怎么改变工具栏的背景?大家帮帮忙,多谢了!!!
...全文
271 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
瓶子 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gz_qmc 的回复:]

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

回答完毕,请结贴
[/Quote]

老大,我想请教下,能否不重新创建CReBar,而直接采用系统自己的那个?还有,我用了你的方法试了下,结果两个ReBar重叠在了一起,效果不是很好!
gavinma 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jennyvenus 的回复:]
引用 17 楼 majianwei86 的回复:
工具条 你要是不习惯 在对话框上内嵌视图,视图我觉得你应该没问题吧 这工具栏就好用了

同意,不过俺认为那是嵌一个frame。
[/Quote]
准确说是frame
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
大家有没有做过的,帮个忙啊
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 visualeleven 的回复:]
http://221.199.150.103/jsj/Html/vc/wen/vcwen08.htm
[/Quote]

你说的实例是在文档应用程序中的,而且是实现了真彩工具栏图标,我说的是工具条的背景,就像word中整个工具栏背景都是蓝色,就是这个蓝色的实现?
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gz_qmc 的回复:]
答一楼的话:
工具栏其实是放在一个叫ReBar的容器里的
所以你平时看到的空的那部分其实是ReBar的
一个ReBar可以放好多个工具栏,有对齐的,也可以不对齐
对工具栏设置的背景色是看不到的,被按钮遮挡了
你必须定义ReBar的变量
然后操作Rebar设置其背景颜色或图片
并在框架的Create里将该ReBar替换默认的ReBar

回答完毕,请结贴
[/Quote]
不好意思,您说的太抽象了,我就一菜鸟,有实例否?
gz_qmc 2010-06-17
  • 打赏
  • 举报
回复
答一楼的话:
工具栏其实是放在一个叫ReBar的容器里的
所以你平时看到的空的那部分其实是ReBar的
一个ReBar可以放好多个工具栏,有对齐的,也可以不对齐
对工具栏设置的背景色是看不到的,被按钮遮挡了
你必须定义ReBar的变量
然后操作Rebar设置其背景颜色或图片
并在框架的Create里将该ReBar替换默认的ReBar

回答完毕,请结贴
gavinma 2010-06-17
  • 打赏
  • 举报
回复
子类化toolbar的一个例子
http://www.codeproject.com/KB/toolbars/truecolortoolbar.aspx
子类化控件的介绍
http://blog.csdn.net/woshishushangdezhu/archive/2009/02/26/3940973.aspx
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 majianwei86 的回复:]
[Quote=引用 2 楼 liweisdut 的回复:]
SetBkMode不是CToolBar类的成员函数啊
[/Quote]
子类化 应该没问题
[/Quote]

子类化?怎么做,有具体的例子吗?我是新手,不太懂啊?
gavinma 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liweisdut 的回复:]
SetBkMode不是CToolBar类的成员函数啊
[/Quote]
子类化 应该没问题
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
SetBkMode不是CToolBar类的成员函数啊
soswaidao 2010-06-17
  • 打赏
  • 举报
回复
SetBkMode
用户 昵称 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 majianwei86 的回复:]
工具条 你要是不习惯 在对话框上内嵌视图,视图我觉得你应该没问题吧 这工具栏就好用了
[/Quote]
同意,不过俺认为那是嵌一个frame。
gavinma 2010-06-17
  • 打赏
  • 举报
回复
工具条 你要是不习惯 在对话框上内嵌视图,视图我觉得你应该没问题吧 这工具栏就好用了
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gz_qmc 的回复:]
朋友,我很晕
既然是对话框,都可以用按钮了,你跑到对话框去用工具条
行是可行的
但我不能理解
自绘一排浮动的按钮,和工具条是一模一样的

当然,你有你的理由;
可是你在对话框画一个某色的区域
把工具条设置在哪个区域不就行了吗?
对话框本身就是个容器了
[/Quote]
哦,试试吧,我很菜的,呵呵,见笑了
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 majianwei86 的回复:]
子类化toolbar的一个例子
http://www.codeproject.com/KB/toolbars/truecolortoolbar.aspx
子类化控件的介绍
http://blog.csdn.net/woshishushangdezhu/archive/2009/02/26/3940973.aspx
[/Quote]
可是,这个子类化没有涉及到怎么更改背景啊
gz_qmc 2010-06-17
  • 打赏
  • 举报
回复
朋友,我很晕
既然是对话框,都可以用按钮了,你跑到对话框去用工具条
行是可行的
但我不能理解
自绘一排浮动的按钮,和工具条是一模一样的

当然,你有你的理由;
可是你在对话框画一个某色的区域
把工具条设置在哪个区域不就行了吗?
对话框本身就是个容器了
liweisdut 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 gz_qmc 的回复:]
一、建立一个单文档项目 XXX;
二、在CMainFrame类里添加变量如下

C/C++ code
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
CReBar mReBar;//注意,这句是添加的变量


三、在CMainFrame类的OnCreate里面添加

C/C++ co……
[/Quote]
试过了,在SDI中可用,可是到对话框应用程序中就不行了,原来能显示的工具栏,经过上面的修改后,不见了
gz_qmc 2010-06-17
  • 打赏
  • 举报
回复
一、建立一个单文档项目 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;

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧