Dialog中使用Toolbar

from   http://www.vccode.com/vcfile/show.php?id=519  
   
  Dialog中使用Toolbar  
   
  --------------------------------------------------------------------------------  
   
  发布者:soarlove     类别:界面编程     日期:2002.08.21   13:43:39     今日/总浏览:   1/220  
   
  简要说明:    
      
   
  MFC中没有提供供对话框使用的工具条类,而我们时常需要开发以对话框为框架的程序。下面我使用简单的代码说明这种方法。    
   
    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);  
  发布者:   soarlove    

你可能感兴趣的:(Dialog中使用Toolbar)