对话框只有客户区,自绘的,界面如下
整个工具栏的创建等等如下代码
CImageList img; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
} // 设置工具栏按钮最小宽度(只关心宽度)
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(120, 160); img.Create(18, 18, ILC_COLOR32|ILC_MASK, 2, 2);
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_BAIDU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_360));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOGOU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOSO));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_GOOGLE)); m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach(); img.Create(16, 16, ILC_COLOR32|ILC_MASK, 2, 2);
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_BAIDU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_360));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOGOU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOSO));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_GOOGLE)); m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach(); // 六个按钮为每个按钮设置消息和文字
m_wndToolBar.SetButtons(NULL, 5); m_wndToolBar.SetButtonInfo(0, 1236, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonText(0, _T("百度一下")); m_wndToolBar.SetButtonInfo(1, 1236, TBSTYLE_BUTTON, 1);
m_wndToolBar.SetButtonText(1, _T("奇虎搜索")); m_wndToolBar.SetButtonInfo(2, 1236, TBSTYLE_BUTTON, 2);
m_wndToolBar.SetButtonText(2, _T("狗狗搜索")); m_wndToolBar.SetButtonInfo(3, 1236, TBSTYLE_BUTTON, 3);
m_wndToolBar.SetButtonText(3, _T("腾讯搜搜")); m_wndToolBar.SetButtonInfo(4, 1236, TBSTYLE_BUTTON, 4);
m_wndToolBar.SetButtonText(4, _T("谷歌搜索")); //m_wndToolBar.SetButtonInfo(5, 1234, TBBS_SEPARATOR, 0); CRect rectToolBar;
m_wndToolBar.GetItemRect(0, &rectToolBar); // 关乎文字的位置
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(85,1)); m_wndToolBar.MoveWindow(CRect(CPoint(50, 50), CSize(800, 100)));现在发现的不足是,工具栏出来的时候并没有按照我绘的背景画背景(这是肯定的),我想让统一点,给工具栏也设置下背景。百度一下,真心没有发现好文章我自己做过继承CToolbar类重载 OnEraseBkgnd(),像我画对话框一样,没有成功我也知道好像 CRebar 把CToolBar放进去,设置CRebar的背景,这样好像是可行了,但是不是太了解CRebar,加了之后好像 Rebar上面下面有两条黑线,各种不想要的效果,还不如就简单些,看CToolbar 自己行不?上面说的是个人测试,可能是错的,我怎样给我的CToolBar加上背景图片,简单点,只用一种颜色也行...在线等哦CToolBarCReBar对话框背景颜色
整个工具栏的创建等等如下代码
CImageList img; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
} // 设置工具栏按钮最小宽度(只关心宽度)
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(120, 160); img.Create(18, 18, ILC_COLOR32|ILC_MASK, 2, 2);
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_BAIDU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_360));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOGOU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOSO));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_GOOGLE)); m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach(); img.Create(16, 16, ILC_COLOR32|ILC_MASK, 2, 2);
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_BAIDU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_360));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOGOU));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_SOSO));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON_GOOGLE)); m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach(); // 六个按钮为每个按钮设置消息和文字
m_wndToolBar.SetButtons(NULL, 5); m_wndToolBar.SetButtonInfo(0, 1236, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonText(0, _T("百度一下")); m_wndToolBar.SetButtonInfo(1, 1236, TBSTYLE_BUTTON, 1);
m_wndToolBar.SetButtonText(1, _T("奇虎搜索")); m_wndToolBar.SetButtonInfo(2, 1236, TBSTYLE_BUTTON, 2);
m_wndToolBar.SetButtonText(2, _T("狗狗搜索")); m_wndToolBar.SetButtonInfo(3, 1236, TBSTYLE_BUTTON, 3);
m_wndToolBar.SetButtonText(3, _T("腾讯搜搜")); m_wndToolBar.SetButtonInfo(4, 1236, TBSTYLE_BUTTON, 4);
m_wndToolBar.SetButtonText(4, _T("谷歌搜索")); //m_wndToolBar.SetButtonInfo(5, 1234, TBBS_SEPARATOR, 0); CRect rectToolBar;
m_wndToolBar.GetItemRect(0, &rectToolBar); // 关乎文字的位置
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(85,1)); m_wndToolBar.MoveWindow(CRect(CPoint(50, 50), CSize(800, 100)));现在发现的不足是,工具栏出来的时候并没有按照我绘的背景画背景(这是肯定的),我想让统一点,给工具栏也设置下背景。百度一下,真心没有发现好文章我自己做过继承CToolbar类重载 OnEraseBkgnd(),像我画对话框一样,没有成功我也知道好像 CRebar 把CToolBar放进去,设置CRebar的背景,这样好像是可行了,但是不是太了解CRebar,加了之后好像 Rebar上面下面有两条黑线,各种不想要的效果,还不如就简单些,看CToolbar 自己行不?上面说的是个人测试,可能是错的,我怎样给我的CToolBar加上背景图片,简单点,只用一种颜色也行...在线等哦CToolBarCReBar对话框背景颜色
解决方案 »
- VC2012的“局部变量窗口”花屏了
- 运行DUMPBIN.EXE碰到的问题
- 在unicode模式下将中文输出进txt文件显式乱码问题???
- CButton类不可以多层次的继承吗?
- 散分!多文档窗口子窗口最大化问题
- CRichEditView实现文件拖放打开功能,请高手指点。
- 各位大哥,我是个菜鸟,请大家帮忙,大家要什么给我给什么!!
- 如何让一个Dialog中的Edit控件接收OnChar()消息
- Vs.net 2003 中添加虚函数 在属性->重写中为什么看不到?
- vs无法调试dll中的.cpp//当前不会命中断点,该文件没有加载任何符号。。。
- "执行、运行"一个函数,那个执行,英语怎么说?
- "定义成"英语怎么说?
谢谢了,你有什么方法没有,求指点一二我用了CReBar 效果是这样的,直接看图
如果有那个朋友可以告诉,CRebar 的背景图片如何用小位图拉伸,还有两条灰线如何去掉,用CRebar也不错
我CRebar是参考网上的代码,这样写的
REBARBANDINFO rbbi;
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_BACKGROUND;
rbbi.cxMinChild = rectToolBar.Width();
rbbi.cyMinChild = rectToolBar.Height();
rbbi.hbmBack = LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_SKIN_BITMAP));
rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 10;
m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
你好,谢谢你的回答,我刚才有点事追问晚了你说的道理我可以明白,你说的那个OnCustomdraw函数我也尝试着加了,但是进不了Case语句呀都,我本人水平不高,在我的CToolBarEx类(继承类)和对话框类都尝试了
void CToolBarEx::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR; switch(lplvcd->nmcd.dwDrawStage)
{
case CDDS_ITEMPREPAINT:
*pResult = CDRF_SKIPDEFAULT;
break; default:
*pResult = CDRF_DODEFAULT;
}
}代码参照这个 http://bbs.csdn.net/topics/30365585 2楼的回复
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
AfxMessageBox("Failed to create toolbar\n");
return -1; // fail to create
}
// change tb back color
HBRUSH newBr=CreateSolidBrush(RGB(212,122,212));
SetClassLong(m_wndToolBar.m_hWnd,GCL_HBRBACKGROUND,(long)newBr);
要是 背景图 ,
CreatePatternBrush
我试了,好像不起作用,还是像上次一样我的代码已经写的比较多了,导致没有生效
你建的工程是不是真的改变了背景色呀?要求是对话框,用CToolbar,最好也加载ICon按钮如果是这样的话,示例工程还是像以前一样直接发我参考一下吧,我对比下看看我那里出问题了,谢谢,[email protected]一旦解决问题直接结帖呀!
建的工程是对话框 真的改变了背景色。
我没有收到邮件呀?你发你的示例工程没有?问题是我弄不出来呀呵呵,我真心想在只有对话框的情况下改变背景色我现在为了要背景色,用了我二楼的方法,CRebar上面有灰线,下面让我用 webBrowser 控件遮盖住了,这不是长久之计呀真心求方法...
我的问题怎么大家都不帮助一下呢?难道新人在论坛就这么不受关注?我出的分也不低呀?大哥你下班了没有呀,这个问题我一直没有解决呢,[email protected]