如何在單文檔中實現分割窗口功能

1.MainFrame.h

protected:

       CSplitterWnd m_wndSplitterTotal; //用於總體切割

       CSplitterWnd m_wndSplitterRight; //用於右側切割

       BOOL m_bSplitterCreated; // 是否已經分割窗口

 

2. MainFrame.cpp:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,

       CCreateContext* pContext)

{

       // 創建一個靜態分欄窗口,分爲一行兩列

       if ( m_wndSplitterTotal.CreateStatic(this, 1, 2) == NULL )

       {

              return FALSE;

       }

       // CLandOwnerView類連接到總分欄對象的00

       m_wndSplitterTotal.CreateView(0, 0, RUNTIME_CLASS(CLandOwnerView),

              CSize(700, 700), pContext);

 

       if ( m_wndSplitterRight.CreateStatic(&m_wndSplitterTotal, 2, 1, WS_CHILD | WS_VISIBLE,

              m_wndSplitterTotal.IdFromRowCol(0, 1) ) == NULL )

       {

              return FALSE; 

       }

       // CRightUpView類連接到右邊分欄對象的00

       m_wndSplitterRight.CreateView(0, 0, RUNTIME_CLASS(CRightUpView),

              CSize(100, 200), pContext);

 

       // CRightDownView類連接到右邊分欄對象的10

       m_wndSplitterRight.CreateView(1, 0, RUNTIME_CLASS(CRightDownView),

              CSize(100, 200), pContext);

 

       // 設置窗格的初始化的大小

       m_wndSplitterTotal.SetRowInfo(0, 100, 0);

       m_wndSplitterTotal.SetActivePane(0, 0, NULL);

       m_bSplitterCreated = TRUE;

       return TRUE;

}

 

當窗口改變大小的時候,分割窗口也會去改變大小

void CMainFrame::OnSize(UINT nType, int cx, int cy)

{

       CFrameWnd::OnSize(nType, cx, cy);

      

       // TODO: Add your message handler code here

       CRect rect;

       GetWindowRect(&rect);

      

       // 如果窗口被分割,而且程序沒有最小化

       if ( m_bSplitterCreated && nType != SIZE_MINIMIZED  )

       {

              m_wndSplitterTotal.SetColumnInfo(0, rect.Width() - 250, 10);

              m_wndSplitterTotal.SetColumnInfo(1, 250, 10);

              m_wndSplitterTotal.RecalcLayout();

 

              m_wndSplitterRight.SetRowInfo(0, rect.Height() / 2, 10);

              m_wndSplitterRight.SetRowInfo(0, rect.Height() / 2, 10);

              m_wndSplitterRight.RecalcLayout();

       }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章