ウィンドウを分割するにはスプリッターウィンドウを使用する.
MainFrm.h
class CMainFrame : public CFrameWnd
{
// アトリビュート
protected:
CSplitterWnd m_wndSplitter;
}
MainFrm.cpp
CFrameWnd::OnCreateClient() をオーバーライドします.
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
// 分割ウィンドウを作成
if(!m_wndSplitter.CreateStatic(this, 2, 1))
return FALSE;
if( !m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMy1View), CSize(100, 100), pContext) ||
!m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CMy2View), CSize(100, 100), pContext) ) {
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE; // こうしなければ分割できない
// return CFrameWnd::OnCreateClient(lpcs, pContext);
}
CreateStatic() には行数と列数を渡す.
エクスプローラーみたいな左右分割ウィンドウであれば 1, 2 を渡す(1行2列)
上下分割ウィンドウは 2, 1 を渡す(2行1列)
CreateView() は 0 から始まるビューを指定する.
左右分割であれば
m_wndSplitter.CreateStatic( ... , 2, 1);
m_wndSplitter.CreateView( 0, 0, ... ); // 1行目1列目
m_wndSplitter.CreateView( 0, 1, ... ); // 1行目2列目
上下分割であれば
m_wndSplitter.CreateStatic( ... , 2, 1);
m_wndSplitter.CreateView( 0, 0, ... ); // 1行目1列目
m_wndSplitter.CreateView( 1, 0, ... ); // 2行目1列目
となる.
参照
ウィンドウ分割固定化
スプリッターウィンドウで3ペイン
スプリッターウィンドウの追加