Преимущество статического разделителя в том, что он может в разных частях использовать разные виды. Создаем приложение как MFC AppWizard с именем TestStatic и типом SDI. Добавим ссылку на класс разделителя в класс рамки:
class CMainFrame : public CFrameWnd { ...... protected: // control bar embedded members CStatusBar m_wndStatusBar; CToolBar m_wndToolBar; CSplitterWnd m_wndSplitter; // Generated message map functions ...... };
Перегрузим OnCreateClient() для создания разделителя:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: Add your specialized code here and/or call the base class return CFrameWnd::OnCreateClient(lpcs, pContext); }
Пока оставим так. Нам теперь нужен второй класс вида. Добавляем класс Insert - New Class с именем CTwoView и родителем CView. Теперь в коде реализации класса CMainFrame нужно добавить ссылки на эти классы видов.
// MainFrm.cpp : implementation of the CMainFrame class // #include "stdafx.h" #include "TestStatic.h" #include "MainFrm.h" #include "TwoView.h" #include "TestStaticView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
А в описание класса CTestStaticView описание класса документа для GetDocument():
#include "TestStaticDoc.h"
Пора создавать разделитель:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { m_wndSplitter.CreateStatic(this,1,2); m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CTestStaticView), CSize(50,50),pContext); return m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTwoView), CSize(50,50),pContext); }
Будет вертикальный разделитель.