CSplitterWnd クラス
分割ウィンドウの機能が用意されています。分割ウィンドウとは複数のペインを持つウィンドウです。
class CSplitterWnd : public CWnd
解説
ペインは、通常アプリケーション定義の CView 派生クラスのオブジェクトですが、適切な子ウィンドウ ID を持つ任意の CWnd オブジェクトを使うこともできます。
CSplitterWnd オブジェクトは、通常親である CFrameWnd または CMDIChildWnd オブジェクトに埋め込まれています。 次の手順で、CSplitterWnd オブジェクトを構築します。
CSplitterWnd メンバー変数を親フレームに埋め込みます。
親フレームの CFrameWnd::OnCreateClient メンバー関数をオーバーライドします。
オーバーライドされた OnCreateClient の中から、CSplitterWnd の Create または CreateStatic メンバー関数を呼び出します。
動的分割ウィンドウを作成するには、Create メンバー関数を呼び出します。 動的分割ウィンドウは通常、同じドキュメントのいくつかのペインまたはビューの作成、スクロールのために使われます。 フレームワークは、分割ウィンドウの初期ペインを自動的に作成します。さらに、分割ウィンドウのコントロールの操作に伴って、付加的なペインの作成、サイズ変更、破棄を行います。
Create を呼び出すとき、ペインが小さすぎてすべてを表示できないときに使われる、行の高さと列の幅の最小値を指定します。 Create を呼び出した後でも、SetColumnInfo と SetRowInfo メンバー関数を呼び出して、これらの最小値を調整できます。
"最適な" 行の高さや、"最適な" 列の幅を設定するのにも、SetColumnInfo やSetRowInfo メンバー関数を使います。 フレームワークが分割ウィンドウを表示するとき、最初に親フレームが表示され、その後で分割ウィンドウが表示されます。 フレーム ウィンドウは、そのとき分割ウィンドウのクライアント領域の左上隅から右下隅に向かって、その最適な大きさに従って、ペインを行や列に配置します。
動的分割ウィンドウのペインはすべて同じクラスである必要があります。 動的分割ウィンドウをサポートしたアプリケーションとして有名なのは、Microsoft Word や Microsoft Excel などです。
静的分割ウィンドウを作成するには、CreateStatic メンバー関数を使います。 静的分割ウィンドウでは、ペインの大きさの変更はできますが、その数や順番は変更できません。
静的分割ウィンドウを作成するときは、個別にすべての分割ペインを作成する必要があります。 親フレームの OnCreateClient メンバー関数から復帰する前にすべてのペインを確実に作成するようにしてください。そうでないと、フレームワークはウィンドウを正しく表示できません。
CreateStatic メンバー関数は、自動的に静的分割ウィンドウの最小値の高さと幅を 0 に初期化します。 Create を呼び出した後、SetColumnInfo と SetRowInfo メンバー関数を呼び出してこれらの最小値を調整します。 SetColumnInfo や SetRowInfo メンバー関数は、CreateStatic の呼び出し後にも、最適なペインの大きさを指示するために使います。
静的分割ウィンドウの各ペインは、しばしば異なるクラスに属する場合があります。 静的分割ウィンドウの例として、グラフィック エディターや Windows のファイル マネージャーを参照してください。
分割ウィンドウは、特殊なスクロール バー (ペインが持っているスクロール バーとは別に) をサポートします。 このスクロール バーは、CSplitterWnd オブジェクトの子であり、ペインで共有されます。
分割ウィンドウを作成するときに、この特殊なスクロール バーを作成します。 たとえば、1 行 2 列で WS_VSCROLL スタイルを持つ CSplitterWnd は、2 つのペインで共有される垂直スクロール バーを表示します。 スクロール バーを移動すると、WM_VSCROLL メッセージが両方のペインに送られます。 共有している 2 つのペインがスクロール バーの位置を設定したときに、共有されているスクロール バーが設定されます。
分割ウィンドウの詳細については、以下を参照してください。
「サポート技術情報」(knowledge Base) の記事 Q262024:[HOWTO]:CPropertySheet CSplitterWnd の子として使用します。
動的分割ウィンドウの作成方法については、以下を参照してください。
必要条件
**ヘッダー:**afxext.h
参照
処理手順
VIEWEX サンプル:複数のビュー、スクロール ビュー、および分割の Windows を示します