在MFC导航中 选择了拆分窗口,但是运行时,还是单一窗口,这需要我们手动的重载函数OnCreateClient(LPCRETESTRUCT,CCreateContext * pContext)来实现拆分,当然前提已经建立了基于CView的视图 本例中为(CPathView),实例如下:
首先在MainFrm.h中定义变量:
CSplitterWnd m_wndSplitter;
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) { /* return m_wndSplitter.Create(this, // 选择拆分窗口后,MFC自动建立的语句,将其注释掉 2, 2, // TODO: 调整行数和列数 CSize(10, 10), // TODO: 调整最小窗格大小 pContext); */ m_wndSplitter.CreateStatic(this,1,2); //一行2列 BOOL bResult=FALSE; UINT nWidth; nWidth = ::GetSystemMetrics(SM_CXSCREEN); bResult=m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CPathView),CSize(nWidth/5,0),pContext); if (!bResult) return FALSE; bResult=m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CPathView),CSize(0,0),pContext); // 确定窗口(0,0)的CSize后,窗口(0,1)的CSize就不起作用了 if (!bResult) return FALSE; return TRUE; }