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;
}