次の方法で共有


CSplitterWnd クラス

分割ウィンドウの機能が用意されています。分割ウィンドウとは複数のペインを持つウィンドウです。

class CSplitterWnd : public CWnd

解説

ペインは、通常アプリケーション定義の CView 派生クラスのオブジェクトですが、適切な子ウィンドウ ID を持つ任意の CWnd オブジェクトを使うこともできます。

CSplitterWnd オブジェクトは、通常親である CFrameWnd または CMDIChildWnd オブジェクトに埋め込まれています。 次の手順で、CSplitterWnd オブジェクトを構築します。

  1. CSplitterWnd メンバー変数を親フレームに埋め込みます。

  2. 親フレームの CFrameWnd::OnCreateClient メンバー関数をオーバーライドします。

  3. オーバーライドされた OnCreateClient の中から、CSplitterWndCreate または CreateStatic メンバー関数を呼び出します。

動的分割ウィンドウを作成するには、Create メンバー関数を呼び出します。 動的分割ウィンドウは通常、同じドキュメントのいくつかのペインまたはビューの作成、スクロールのために使われます。 フレームワークは、分割ウィンドウの初期ペインを自動的に作成します。さらに、分割ウィンドウのコントロールの操作に伴って、付加的なペインの作成、サイズ変更、破棄を行います。

Create を呼び出すとき、ペインが小さすぎてすべてを表示できないときに使われる、行の高さと列の幅の最小値を指定します。 Create を呼び出した後でも、SetColumnInfoSetRowInfo メンバー関数を呼び出して、これらの最小値を調整できます。

"最適な" 行の高さや、"最適な" 列の幅を設定するのにも、SetColumnInfoSetRowInfo メンバー関数を使います。 フレームワークが分割ウィンドウを表示するとき、最初に親フレームが表示され、その後で分割ウィンドウが表示されます。 フレーム ウィンドウは、そのとき分割ウィンドウのクライアント領域の左上隅から右下隅に向かって、その最適な大きさに従って、ペインを行や列に配置します。

動的分割ウィンドウのペインはすべて同じクラスである必要があります。 動的分割ウィンドウをサポートしたアプリケーションとして有名なのは、Microsoft Word や Microsoft Excel などです。

静的分割ウィンドウを作成するには、CreateStatic メンバー関数を使います。 静的分割ウィンドウでは、ペインの大きさの変更はできますが、その数や順番は変更できません。

静的分割ウィンドウを作成するときは、個別にすべての分割ペインを作成する必要があります。 親フレームの OnCreateClient メンバー関数から復帰する前にすべてのペインを確実に作成するようにしてください。そうでないと、フレームワークはウィンドウを正しく表示できません。

CreateStatic メンバー関数は、自動的に静的分割ウィンドウの最小値の高さと幅を 0 に初期化します。 Create を呼び出した後、SetColumnInfoSetRowInfo メンバー関数を呼び出してこれらの最小値を調整します。 SetColumnInfoSetRowInfo メンバー関数は、CreateStatic の呼び出し後にも、最適なペインの大きさを指示するために使います。

静的分割ウィンドウの各ペインは、しばしば異なるクラスに属する場合があります。 静的分割ウィンドウの例として、グラフィック エディターや Windows のファイル マネージャーを参照してください。

分割ウィンドウは、特殊なスクロール バー (ペインが持っているスクロール バーとは別に) をサポートします。 このスクロール バーは、CSplitterWnd オブジェクトの子であり、ペインで共有されます。

分割ウィンドウを作成するときに、この特殊なスクロール バーを作成します。 たとえば、1 行 2 列で WS_VSCROLL スタイルを持つ CSplitterWnd は、2 つのペインで共有される垂直スクロール バーを表示します。 スクロール バーを移動すると、WM_VSCROLL メッセージが両方のペインに送られます。 共有している 2 つのペインがスクロール バーの位置を設定したときに、共有されているスクロール バーが設定されます。

分割ウィンドウの詳細については、以下を参照してください。

  • テクニカル ノート 29

  • 「サポート技術情報」(knowledge Base) の記事 Q262024:[HOWTO]:CPropertySheet CSplitterWnd の子として使用します。

動的分割ウィンドウの作成方法については、以下を参照してください。

必要条件

**ヘッダー:**afxext.h

参照

処理手順

VIEWEX サンプル:複数のビュー、スクロール ビュー、および分割の Windows を示します

参照

CWnd クラス

階層図

CView クラス

CWnd クラス

その他の技術情報

CSplitterWnd のメンバー