MFC文檔應用程式CToolBar:設定兩個工具條並列停靠到同一條邊上 轉

來源:互聯網
上載者:User

標籤:控制   splay   滑鼠   效果   article   too   tar   toolbar   nav   

轉自:http://blog.csdn.net/panshiqu/article/details/9369891#

將多個工具條同時並列停靠在某視窗的某一條邊上。對於這種停靠方法,利用上述工具條控制函數DockControlBar的lpRect參數,通過控制工具條的停靠矩形地區的方法可以實現

1:在MainFrm.h中增加如下成員函數定義

// 增加  public:      void DockControlBarLeftOf(CToolBar* bar, CToolBar* leftof);  、
2:在MainFrm.cpp中實現成員函數
void CMainFrame::DockControlBarLeftOf(CToolBar* bar, CToolBar* leftof)  {      //設定工具條並列停靠到同一條邊上      CRect rect;      DWORD dw;      UINT n=0;      RecalcLayout(); //重新顯示      leftof->GetWindowRect(rect);      rect.OffsetRect(1, 0);      dw=leftof->GetBarStyle();      n=(dw&CBRS_ALIGN_TOP)?AFX_IDW_DOCKBAR_TOP:n;      n=(dw&CBRS_ALIGN_BOTTOM&&n==0)?AFX_IDW_DOCKBAR_BOTTOM:n;      n=(dw&CBRS_ALIGN_LEFT&&n==0)?AFX_IDW_DOCKBAR_LEFT:n;      n=(dw&CBRS_ALIGN_RIGHT&&n==0)?AFX_IDW_DOCKBAR_RIGHT:n;      DockControlBar(bar,n,&rect);  }  

  

在這個函數中應注意對RecalcLayout()函數和OffsetRect()函數的調用,前一個函數用來重新顯示被調整的客戶區和工具條,後一個函數用來重新確定矩形地區,這相當於利用滑鼠將第二個工具條視窗拖動到前一個工具條上然後釋放。

3:就是調用上面這個函數,假設你建立的toolbar變數是m_wndToolBarNav,那麼就用下面的程式替換原來MainFrm.cpp中的片段

原:

// TODO: 如果不需要可停駐工具列,則刪除這三行  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);  EnableDocking(CBRS_ALIGN_ANY);  DockControlBar(&m_wndToolBar);
替換後:
// TODO: 如果不需要可停駐工具列,則刪除這三行  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);  m_wndToolBarNav.EnableDocking(CBRS_ALIGN_ANY);  EnableDocking(CBRS_ALIGN_ANY);  DockControlBar(&m_wndToolBar);  DockControlBarLeftOf(&m_wndToolBarNav,&m_wndToolBar);//主要是這裡
以上三個步驟後,就可以去看效果啦

MFC文檔應用程式CToolBar:設定兩個工具條並列停靠到同一條邊上 轉

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.