VC中实现多行工具栏

        VC中实现工具栏是件轻而易举的事,然而要实现多行工具栏却需要一定的编程,本文简要介绍实现一个简单的多行工具栏 的具体方法。

        多行工具栏的实现方法是用CBRS_SIZE_FIXED样式创建工具栏,然后再用TBBS_WRAPPED设置一行末尾的按钮样式。注意,创建时一定要使用CBRS_SIZE_FIXED样式,不然是不会使工具栏按钮换行的。

        先创建一个基于文档的MFC应用程序,然后在CMainFrame类中添加一个CToolBar对象,本文中以通常的绘图工具栏为列,将该对象命名为m_wndDrawingBar。然后在资源文件中添加绘图工具栏位图,本文采用位图载入时的默认ID为IDB_BITMAP1。好吧,所有的准备工作都已经完成,下面开始实现多行工具栏。

       在CMainFrame类中添加成员函数CreateDrawingBar(),语句如下

        protected:
        void CreateDrawingBar();

       实现该函数,具体代码如下

       // 生成多行工具栏函数
       void CMainFrame::CreateDrawingBar()
       {
        //工具栏按钮要换行,创建时要使用CBRS_SIZE_FIXED样式才有效
        if(!m_wndDrawingBar.CreateEx  (                    this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_SIZE_FIXED|CBRS_LEFT|CBRS_TOOLTIPS) || 
!m_wndDrawingBar.SetButtons(NULL,16)  )
        {
        TRACE0("未能创建多行工具栏/n");
        return;      // 未能创建
        }

        CImageList img;

        img.Create( IDB_BITMAP1, 16, 0, RGB(255,0,0) );
        m_wndDrawingBar.GetToolBarCtrl().SetHotImageList(&img);  
        m_wndDrawingBar.GetToolBarCtrl().SetImageList(&img);
        m_wndDrawingBar.GetToolBarCtrl().SetDisabledImageList(&img);
         img.Detach();
 
        // 设置按钮样式时要使用TBBS_WRAPPED标明换行的位置
        m_wndDrawingBar.SetButtonInfo(0,ID_FILE_NEW,TBSTYLE_BUTTON,0);
        m_wndDrawingBar.SetButtonInfo(1,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,1); //换行
        m_wndDrawingBar.SetButtonInfo(2,ID_FILE_NEW,TBSTYLE_BUTTON,2);
        m_wndDrawingBar.SetButtonInfo(3,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,3);
        m_wndDrawingBar.SetButtonInfo(4,ID_FILE_NEW,TBSTYLE_BUTTON,4);
        m_wndDrawingBar.SetButtonInfo(5,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,5);
        m_wndDrawingBar.SetButtonInfo(6,ID_FILE_NEW,TBSTYLE_BUTTON,6);
        m_wndDrawingBar.SetButtonInfo(7,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,7);
        m_wndDrawingBar.SetButtonInfo(8,ID_FILE_NEW,TBSTYLE_BUTTON,8);
        m_wndDrawingBar.SetButtonInfo(9,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,9);
        m_wndDrawingBar.SetButtonInfo(10,ID_FILE_NEW,TBSTYLE_BUTTON,10);
        m_wndDrawingBar.SetButtonInfo(11,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,11);
        m_wndDrawingBar.SetButtonInfo(12,ID_FILE_NEW,TBSTYLE_BUTTON,12);
        m_wndDrawingBar.SetButtonInfo(13,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,13);
        m_wndDrawingBar.SetButtonInfo(14,ID_FILE_NEW,TBSTYLE_BUTTON,14);
        m_wndDrawingBar.SetButtonInfo(15,ID_FILE_NEW,TBSTYLE_BUTTON|TBBS_WRAPPED,15);         
}

       现在在CMainFrame类的OnCreate函数中调用CreateDrawingBar函数,具体代码如下

        // 创建多行工具栏
         CreateDrawingBar();
      
  注意:以上语句应该在return语句之前调用。

       好了编译调试一下,可以得到以下运行结果。

多行工具栏效果预览

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值