如何在对话框中加入TOOLBAR?

如何在对话框中加入TOOLBAR?

楼主crystal2000(Sun) 2002-01-25 09:48:58 在 VC/MFC / 基础类 提问

如何在对话框中加入TOOLBAR? 问题点数:20、回复次数:3Top

src="如何在对话框中加入TOOLBAR VC-MFC - 基础类 - CSDN社区 community_csdn_net.files/Board.htm" frameborder="0" scrolling="no">

1 楼crystal2000(Sun)回复于 2002-01-25 10:01:08 得分 0

请教!  
  Top

2 楼guzh()回复于 2002-01-25 10:09:08 得分 20

  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);  
     
   
  从别人处拿的Top

3 楼tpProgramer(tp编程者)回复于 2002-01-25 10:22:54 得分 0

过年了,即使得不到我所需的答案,   大家开心了也不错.  
  呵呵.  
  分算什么东西.快乐才是最重要的!  
   
   
  还有一个100分的问题,其实   不是问题,只是一个咨询,参与有分!  
  http://www.csdn.net/Expert/topic/497/497690.shtm 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值