现在的位置: 首页 > 综合 > 正文

mfc toolbar对话框的总结

2013年08月11日 ⁄ 综合 ⁄ 共 3206字 ⁄ 字号 评论关闭

让我一直郁闷的就是,一个小小的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字体的颜色,这个基础上不要改变太多。希望,高手帮我一下,我也把我所有知道的东西都写在这里了,希望高手帮我一上。再次感谢,如果改好了,我会上传到我的资源里,方便大家以后写程序。

再次感谢能有大侠帮我一上,好吧。小弟在此谢过。事情往往在最后一步是把你难住,我都遇到好几次了。本人开发没有太多经验。

抱歉!评论已关闭.