vc中的單文檔多視圖

來源:互聯網
上載者:User

vc中的單文檔多視圖

document與view是屬於設計模式中的observer。如何控制分割視窗後分割條的移動範圍??給出思路:

一、建立一個類CMySplitter,基類為CSplitterWnd

二、重載該類的OnMouseMove函數:

void CMySplitter::OnMouseMove(UINT nFlags, CPoint point)
{
  // 限制切分條的運動範圍。
   if(point.x<228||point.x>600)
  {
      CWnd::OnMouseMove(nFlags, point);
  }
  else
  { 
      CSplitterWnd::OnMouseMove(nFlags, point);
  }
}

三、 然後就可以跟一般的視窗分割那樣去做了,if(point.x<228||point.x>600)這裡的範圍可以隨你去設定。

四、切分視窗
切分視窗就不用講那麼詳細了,在MaiFram.h建立切分條對象:

protected:
CMySplitter m_wndSplitter; //切分視窗對象

//在MaiFram.cpp中實現視窗切分:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,CCreateContext* pContext)
{
    // 建立拆分器視窗
   if (!m_wndSplitter.CreateStatic(this, 1, 2))
       return FALSE;
   if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(228, 100), pContext) ||
   !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CDataEditView), CSize(100, 100),  pContext))
   {
       m_wndSplitter.DestroyWindow();
       return FALSE;
   }
    return TRUE;
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.