MFC工具栏的使用



1、工具栏的作用


工具栏是Windows应用程序中一个非常重要的图形界面元素,它提供了一组顺序排列的带有位图图像的按钮。有一个较为明显的好处就是在有比较多按钮的情况下,使用工具栏可以更加方便的组织和管理资源。PhotoShop的主界面上就可以很明显的看到这一点。



图中标注箭头的使用的都是工具栏实现的。

2、创建工具栏


MSDN中可以看到工具栏继承自CControlBar,工具栏的创建MSDN中给出了两种创建方式:
第一种方式: 
1、创建一个toolbar资源
2、创建一个CTooBar类的对象
3、调用Create或者CreateEx函数来创建实例
4、调用LoadToolBar函数来对资源进行加载

示例:
    if (!m_wndMyToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
      | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
      !m_wndMyToolBar.LoadToolBar(IDR_MYTOOLBAR))
   {
      TRACE0("Failed to create toolbar\n");
      return -1;      // fail to create
   }
   m_wndMyToolBar.EnableDocking(CBRS_ALIGN_ANY);  //指定工具栏可以停靠
   EnableDocking(CBRS_ALIGN_ANY);				  //指定frame框架可以被停靠
   DockControlBar(&m_wndMyToolBar);               //停靠工具栏

第二种方式: 
1、创建一个CTooBar类的对象
2、调用Create或者CreateEx函数来创建实例
3、调用LoadBitMap函数来导入位图,该位图作为构建toolbar的按钮图标

4、调用SetButtons函数来设置按钮的风格并且为每一个按钮添加一个位图相关联

两个创建函数

BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR );
BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, CRect rcBorders = CRect(0, 0, 0, 0), UINT nID = AFX_IDW_TOOLBAR);

相比Create函数,CreateEx函数多加了一个参数dwCtrlStyle用来指定扁平风格和一个rcBorders的参数来指定边框的厚度。

工具栏和控制栏的风格列表如下:






3、使用位图作为工具栏图标


也就是第二种方式下讲到的那样,不是用VC中绘制的工具栏,而是使用自己导入的位图来作为工具栏。
  
    if (!m_ToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
		                    |CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)
	   )
	{
		return -1;
	}
	m_bitmap.LoadBitmap(IDB_BITMAP5);			//加载位位图
	m_ToolBar.SetBitmap(m_bitmap);              //向工具栏中设置位图
	UINT nIDs[] =								//ID列表
	{
		ID_BTN_A,ID_BTN_B,ID_BTN_C,
	};
	m_ToolBar.SetButtons(nIDs, 3);			    //向按钮中设置位图图像

后面的步骤就和之前是一样的了,这里加载的就成了24bit真彩的图片了。







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空空的司马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值