MFC 工具栏的自定义创建

转自:http://hi.baidu.com/zyl_aiwo/item/6931bace475b4451bdef6983

1.如何添加自己的工具栏

在CMainFrame::OnCreate中,MFC自动添加的工具栏如下

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS 
| CBRS_FLYBY | CBRS_SIZE_FIXED) ||
!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
      TRACE0(_T(“未能创建工具栏\n”));
      return -1;      // 未能创建

参照其创建自己的工具栏,注意需添加红色字体部分
if (!m_wndDrawBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER 
| CBRS_TOOLTIPS | CBRS_FLYBY |CBRS_SIZE_FIXED
,CRect(1,1,1,1),IDR_DRAWBAR) ||
!m_wndDrawBar.LoadToolBar(IDR_DRAWBAR))
{
      TRACE0(“Failed to create toolbar\n”);
      return ;      // fail to create
}

2.停靠工具栏

创建好工具栏后,可用下面的代码停靠工具栏
EnableDocking(CBRS_ALIGN_ANY);
m_wndDrawBar.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndDrawBar,AFX_IDW_DOCKBAR_TOP);

如果需要两个工具栏排列在同一行上,可用下面的代码实现
this->DockPaneLeftOf(&m_wndDrawBar,&m_wndToolBar); //将m_wndDrawBar停靠在m_wndToolBar的左边

如果有多个工具栏需要排列在不同的行上,可用下面的代码实现
//排列第一行的两个工具栏
DockPane(&m_wndBar1,AFX_IDW_DOCKBAR_TOP);
this->DockPaneLeftOf(&m_wndBar2,&m_wndBar1);
//排列第二行的两个工具栏
DockPane(&m_wndBar3,,AFX_IDW_DOCKBAR_TOP);
this->DockPaneLeftOf(&m_wndBar4,&m_wndBar3);

3.让一个工具栏上的按钮多行排列
CMFCToolBar wndToolBar; 
wndToolBar.GetButton(i)->m_bWrap=TRUE; //第i个按钮开始换行

4.插入组合框等
//创建和初始化组合框
CMFCToolBarComboBoxButton m_combo(IDC_COMBO1,
                                                                         -1, // 工具条位图中的图像序号
                                                                         CBS_DROPDOWNLIST,//组合框类型
                                                                         50);  //组合框的宽度
static int nstr[] = {1,2,3,4,5,6,7, 8, 9, 10};
CString str;
int nCount = sizeof (nstr) / sizeof (int);
for (int k=0; k<nCount; k++) 
{
        str.Format (_T (“%d”), nstr[k]);
        m_combo.AddItem(str);
}
m_combo.SelectItem(0);
//插入到工具栏
m_wndTextBar.InsertSeparator(); //添加分隔条
m_wndTextBar.InsertButton(m_combo,0);

如果插入菜单的话则使用 CMFCToolBarMenuButton

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值