vs 2008 MFC Dialog窗口中增加toolbar 的方法

 

step1:  
  在资源编辑器中插入工具条资源,并为每个按钮创建ID。将它命名为IDC_TOOLBAR1  
   
  step2:  
  在对话框变量中添加一个工具条变量。  
  CToolBar   m_wndToolBar;  
   
  step3:  
  在CDialog::OnInitDialog中添加如下代码:      
  //   创建工具条并调入资源  
  if(!m_wndToolBar.Create(this)   ||   !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))  
  {  
  TRACE0("Failed   to   Create   Dialog   Toolbar/n");  
  EndDialog(IDCANCEL);  
  }  
   
  CRect rcClientOld;   //   久客户区RECT  
  CRect rcClientNew;   //   加入TOOLBAR后的CLIENT   RECT  
  GetClientRect(rcClientOld);   //    
  //   Called   to   reposition   and   resize   control   bars   in   the   client   area   of   a   window  
  //   The   reposQuery   FLAG   does   not   really   traw   the   Toolbar.     It   only   does   the   calculations.  
  //   And   puts   the   new   ClientRect   values   in   rcClientNew   so   we   can   do   the   rest   of   the   Math.  
  //重新计算RECT大小  
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rcClientNew);  
   
  //   All   of   the   Child   Windows   (Controls)   now   need   to   be   moved   so   the   Tollbar   does   not   cover   them   up.  
  //所有的子窗口将被移动,以免被TOOLBAR覆盖  
  //   Offest   to   move   all   child   controls   after   adding   Tollbar  
  //计算移动的距离  
  CPoint   ptOffset(rcClientNew.left-rcClientOld.left,  
  rcClientNew.top-rcClientOld.top);  
   
  CRect rcChild;  
  CWnd* pwndChild   =   GetWindow(GW_CHILD);     //得到子窗口  
  while(pwndChild)   //   处理所有子窗口  
  {//移动所有子窗口  
  pwndChild->GetWindowRect(rcChild);  
  ScreenToClient(rcChild);    
  rcChild.OffsetRect(ptOffset);    
  pwndChild->MoveWindow(rcChild,FALSE);    
  pwndChild   =   pwndChild->GetNextWindow();  
  }  
   
  CRect rcWindow;  
  GetWindowRect(rcWindow);   //   得到对话框RECT  
  rcWindow.right   +=   rcClientOld.Width()   -   rcClientNew.Width();   //   修改对话框尺寸  
  rcWindow.bottom   +=   rcClientOld.Height()   -   rcClientNew.Height();    
  MoveWindow(rcWindow,FALSE);   //   Redraw   Window  
   
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);  

 

注:要放在其它控件初始化之后

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值