| 7行目: | 7行目: | ||
MFCでは、分割ウインドウを作成するAPIが標準で用意されている。それが、CSplitterWnd::CreateStatic関数である。<br> | MFCでは、分割ウインドウを作成するAPIが標準で用意されている。それが、CSplitterWnd::CreateStatic関数である。<br> | ||
下図のような1行2列の2ペインを持つ分割ウインドウのプログラムを記述する。<br> | 下図のような1行2列の2ペインを持つ分割ウインドウのプログラムを記述する。<br> | ||
[[ファイル:MFC Pane 01.jpg|フレームなし|中央]] | |||
<br> | <br> | ||
まず、各ペインを管理するViewクラスを作成する。<br> | まず、各ペインを管理するViewクラスを作成する。<br> | ||
| 28行目: | 29行目: | ||
// ... | // ... | ||
public: | public: | ||
CSplitterWnd | CSplitterWnd m_SplitMain; // スプリッタウインドウ | ||
// ... | // ... | ||
} | } | ||
| 43行目: | 44行目: | ||
そして、CMainFrm.cppファイルに、以下のコードを追加する。<br> | そして、CMainFrm.cppファイルに、以下のコードを追加する。<br> | ||
<source lang="c++"> | <source lang="c++"> | ||
#include " | CMainFrm.cpp | ||
#include "CPaneAView.h" | |||
#include "CPaneBView.h" | #include "CPaneADoc.h" // CPaneAView.hよりも先にインクルード | ||
#include "CPaneAView.h" // CPaneAViewクラスのヘッダをインクルード | |||
#include "CPaneBView.h" // CPaneBViewクラスのヘッダをインクルード | |||
// ... | // ... | ||
| 52行目: | 55行目: | ||
{ | { | ||
// ... | // ... | ||
m_SplitWndMain.CreateStatic( // スプリッタウインドウの作成 | |||
m_SplitWndMain.CreateStatic( // | this, // スプリッタウインドウの親ウィンドウを指定。ここではメインフレームを分割するのでthisを指定。 | ||
this, // | |||
1, // 行の分割数を指定。ここでは縦分割は無いので1を指定 | 1, // 行の分割数を指定。ここでは縦分割は無いので1を指定 | ||
2); // 列の分割数を指定。ここでは左右分割なので2を指定 | 2); // 列の分割数を指定。ここでは左右分割なので2を指定 | ||
m_SplitMain.CreateView( // ペインA(ペイン場所1行1列目)を作成 | |||
0, // スプリッタの行番号を指定 | 0, // スプリッタの行番号を指定 | ||
0, // スプリッタの列番号を指定 | 0, // スプリッタの列番号を指定 | ||
| 65行目: | 67行目: | ||
pContext); | pContext); | ||
m_SplitMain.CreateView( // ペインB(ペイン場所1行2列目)を作成。 | |||
0, // スプリッタの行番号を指定 | 0, // スプリッタの行番号を指定 | ||
1, // スプリッタの列番号を指定 | 1, // スプリッタの列番号を指定 | ||
RUNTIME_CLASS(CPaneBView), // paneBを管理するViewクラスCPaneBViewを指定 | RUNTIME_CLASS(CPaneBView), // paneBを管理するViewクラスCPaneBViewを指定 | ||
CSize(0,0), | CSize(0, 0), // ペインのサイズ | ||
pContext); | pContext); | ||
// ... | // ... | ||
} | } | ||
| 78行目: | 79行目: | ||
ここで注意するのが、CSplitterWnd::CreateView関数の第3引数である。<br> | ここで注意するのが、CSplitterWnd::CreateView関数の第3引数である。<br> | ||
第3引数において、指定ペインを管理するViewクラスを指定する。<br> | 第3引数において、指定ペインを管理するViewクラスを指定する。<br> | ||
ペインAを管理するのはCPaneAViewなのでこれを指定する。同様に、ペインBを管理するのはCPaneBViewクラスなので、CPaneBViewを指定する。<br> | |||
尚、MDIアプリケーションの場合も同様に、CChildFrameクラスにOnCreateClient関数をオーバーライドして、OnCreateClient関数内に同様のコードを追加する。<br> | 尚、MDIアプリケーションの場合も同様に、CChildFrameクラスにOnCreateClient関数をオーバーライドして、OnCreateClient関数内に同様のコードを追加する。<br> | ||
<br><br> | <br><br> | ||