让我一直郁闷的就是,一个小小的toolbar就让我做了四天,才做成这个样子,代码不算多,但是资料却那样的少,csdn上也没有找到关于toolbar的我想要的资料,让我来做一下,我这几天里查阅的资料吧。发泄一下Fuck,Fuck,mfc 这个东西要想把界面做的那样的好看真他妈的不容易,要是C#,不到一个小时就搞定了,苦逼了那样久,才找到那样一点的资料。Fuck,Fuck。这七天让我来做toolbar,用了五天了,还没有做到一半,但是相信对其他的应该会有用,俗话说站在巨人的肩膀上看得高,我不算巨人,但在潮着那个方向走。
来看一下简单的toolbar .
新建一个工程这个是对话框的,各位亲们不要搞错了呀。
在你的头文件里加上这几个东西。
CToolBar m_toolbar;//工具条
CImageList m_imagelist;//图像
CString str;//字符
CReBar m_Rebar;//容器类
然后就开始在你的OnInitDialog()里写了。
最简单的toolbar 工具。
m_imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
m_imagelist.Add(AfxGetApp()->LoadIcon( IDI_ICON1));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
下来我们定义一个数组。
UINT array[9];
for (int i = 0;i<9;i++)
{
array[i]=i+1001;
}
m_toolbar.Create(this);
m_toolbar.SetButtons(array,9);
m_toolbar.GetToolBarCtrl().SetButtonWidth(50,70);
m_toolbar.GetToolBarCtrl().SetImageList(&m_imagelist);
m_toolbar.SetSizes(CSize(70,50),CSize(28,28));
m_toolbar.EnableToolTips(TRUE);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
来看一下效果吧。
这个就是效果了。这是简单的toolbar.再往深里加一点知识,一点一点的跟着我加好吧你们想在第几个按钮的后面加上分隔条呢?
让我来想一想第四个按钮好吧。
那就让你把上边的数据改成这样就可以了。
UINT array[9];
for (int i = 0;i<9;i++)
{
if(i==3)
array[i]=ID_SEPARATOR//第四个按钮为分隔条,亲们注意了数组下标是从0开始的。
else
array[i]=i+1001;
}
来看一下效果怎么样呢?
看到了效了吧。
你要是想给他加上文字的话。加上这几条语句就行了。
m_toolbar.SetButtonText(0,"系统登录");
m_toolbar.SetButtonText(1,"操作员信息");
m_toolbar.SetButtonText(2,"客户信息");
m_toolbar.SetButtonText(3,"商品入库");
m_toolbar.SetButtonText(4,"商品销售");
m_toolbar.SetButtonText(5,"销售退货");
m_toolbar.SetButtonText(6,"客户订货");
m_toolbar.SetButtonText(7,"入库查询");
m_toolbar.SetButtonText(8,"销售查询");
来看一下效果吧。
到这里就算比较简单的了难的来了
怎么改变他的字体呢?我也是找了好多的资料才找到的,你们看一下这样写有什么问题没有。
LOGFONT logfont;
GetObject(::GetStockObject(DEFAULT_GUI_FONT),sizeof(logfont),&logfont);
logfont.lfCharSet=GB2312_CHARSET;
logfont.lfWeight = FW_NORMAL;
logfont.lfHeight = 24;
lstrcpy(logfont.lfFaceName, _T("微软雅黑"));
static CFont sfontStatusBar;
sfontStatusBar.CreateFontIndirect(&logfont);
m_toolbar.SetFont(&sfontStatusBar);
好了,看一下效果吧,因为我做的跟上边的不一样,图标也就不一样了。
看到了没有字体给改了,看到了吧,至于怎么改变字体的颜色,我现在都不会做,也希望看到这一篇博文的高手来帮我解答一下好吧。谢谢。图标虽然不怎么好看,自己做的。做不成自己想要的样子,感觉自己老悲剧了。
至于怎么样给他加上背景色,来看一下怎么写好吧。
m_toolbar.SetSizes(CSize(110,100),CSize(60,60));
m_Rebar.Create(this);
m_Rebar.AddBar(&m_toolbar);
m_Rebar.RedrawWindow();
REBARBANDINFO info;
info.cbSize=sizeof(info);
info.fMask=RBBIM_BACKGROUND;
m_toolbar.ModifyStyle(0,TBSTYLE_TRANSPARENT);
info.hbmBack=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_ BITMAP2));
m_Rebar.GetReBarCtrl().SetBandInfo(0,&info);
再来看一下效果吧。
看到了吧。这就是我现在做的,但是还是希望能帮到别人。关于toolbar 这一方面。
我这里还有几个例子,让大家来看一下效果。
这个是单文档的。
看一下效果吧。
还有一个是可以移动的toolbar,也是单文档的。
再来看一下下一张的效果。
好了,我给大家一下下载地址
希望这一点能帮到正在做开发的朋友。也希望高手看到了帮我解决一下,怎么改变toolbar字体的颜色,这个基础上不要改变太多。希望,高手帮我一下,我也把我所有知道的东西都写在这里了,希望高手帮我一上。再次感谢,如果改好了,我会上传到我的资源里,方便大家以后写程序。
再次感谢能有大侠帮我一上,好吧。小弟在此谢过。事情往往在最后一步是把你难住,我都遇到好几次了。本人开发没有太多经验。