次の方法で共有


CSplitterWnd クラス

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

構文

class CSplitterWnd : public CWnd

メンバー

パブリック コンストラクター

名前 説明
CSplitterWnd::CSplitterWnd CSplitterWnd オブジェクトを構築するための呼び出し。

パブリック メソッド

名前 説明
CSplitterWnd::ActivateNext [次のウィンドウ] または [前のウィンドウ] コマンドを実行します。
CSplitterWnd::CanActivateNext [次のウィンドウ] または [前のウィンドウ] コマンドが現在可能かどうかを確認します。
CSplitterWnd::Create 動的分割ウィンドウを作成し、 CSplitterWnd オブジェクトにアタッチする呼び出し。
CSplitterWnd::CreateScrollBarCtrl 共有スクロール バー コントロールを作成します。
CSplitterWnd::CreateStatic 静的分割ウィンドウを作成し、 CSplitterWnd オブジェクトにアタッチする呼び出し。
CSplitterWnd::CreateView 分割ウィンドウでペインを作成する呼び出し。
CSplitterWnd::DeleteColumn 分割ウィンドウから列を削除します。
CSplitterWnd::DeleteRow 分割ウィンドウから行を削除します。
CSplitterWnd::DeleteView 分割ウィンドウからビューを削除します。
CSplitterWnd::DoKeyboardSplit キーボード分割コマンド (通常は "ウィンドウ分割") を実行します。
CSplitterWnd::DoScroll 分割ウィンドウの同期されたスクロールを実行します。
CSplitterWnd::DoScrollBy 指定されたピクセル数だけウィンドウを分割してスクロールします。
CSplitterWnd::GetActivePane フレーム内のフォーカスビューまたはアクティブビューからアクティブペインを決定します。
CSplitterWnd::GetColumnCount 現在のペイン列数を返します。
CSplitterWnd::GetColumnInfo 指定した列の情報を返します。
CSplitterWnd::GetPane 指定した行と列のペインを返します。
CSplitterWnd::GetRowCount 現在のペイン行数を返します。
CSplitterWnd::GetRowInfo 指定した行に関する情報を返します。
CSplitterWnd::GetScrollStyle 共有スクロール バー スタイルを返します。
CSplitterWnd::IdFromRowCol 指定した行と列にあるペインの子ウィンドウ ID を返します。
CSplitterWnd::IsChildPane ウィンドウがこの分割ウィンドウの子ウィンドウであるかどうかを確認する呼び出し。
CSplitterWnd::IsTracking 分割バーが現在移動されているかどうかを判断します。
CSplitterWnd::RecalcLayout 行または列のサイズを調整した後、分割ウィンドウを再表示する呼び出し。
CSplitterWnd::SetActivePane ウィンドウをフレーム内のアクティブなウィンドウに設定します。
CSplitterWnd::SetColumnInfo 指定した列情報を設定する呼び出し。
CSplitterWnd::SetRowInfo 指定した行情報を設定する呼び出し。
CSplitterWnd::SetScrollStyle 分割ウィンドウの共有スクロール バーサポートの新しいスクロール バー スタイルを指定します。
CSplitterWnd::SplitColumn フレーム ウィンドウが垂直方向に分割される場所を示します。
CSplitterWnd::SplitRow フレーム ウィンドウが水平方向に分割される場所を示します。

保護メソッド

名前 説明
CSplitterWnd::OnDraw 分割ウィンドウを描画するためにフレームワークによって呼び出されます。
CSplitterWnd::OnDrawSplitter 分割ウィンドウのイメージをレンダリングします。
CSplitterWnd::OnInvertTracker 分割ウィンドウのイメージをフレーム ウィンドウと同じサイズと形状にレンダリングします。

解説

ペインは通常、 CViewから派生したアプリケーション固有のオブジェクトですが、適切な子ウィンドウ ID を持つ任意の CWnd オブジェクトを指定できます。

CSplitterWnd オブジェクトは、通常、親CFrameWndまたはCMDIChildWnd オブジェクトに埋め込まれます。 次の手順を使用して、 CSplitterWnd オブジェクトを作成します。

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

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

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

Create メンバー関数を呼び出して、動的分割ウィンドウを作成します。 動的分割ウィンドウは、通常、同じドキュメントの多数の個々のペイン (ビュー) を作成およびスクロールするために使用されます。 フレームワークは、スプリッターの初期ウィンドウを自動的に作成します。その後、ユーザーが分割ウィンドウのコントロールを操作すると、フレームワークによって追加のペインが作成、サイズ変更、および破棄されます。

Createを呼び出すときは、行の最小の高さと列の幅を指定して、ペインが小さすぎて完全に表示できないタイミングを決定します。 Createを呼び出した後は、SetColumnInfoSetRowInfoメンバー関数を呼び出すことによって、これらの最小値を調整できます。

また、 SetColumnInfo および SetRowInfo メンバー関数を使用して、列の "理想的な" 幅と行の "理想的な" 高さを設定します。 フレームワークが分割ウィンドウを表示すると、最初に親フレーム、次に分割ウィンドウが表示されます。 その後、フレームワークは、理想的なディメンションに従って列と行のペインをレイアウトし、分割ウィンドウのクライアント領域の左上隅から右下隅に作業します。

動的分割ウィンドウ内のすべてのペインは、同じクラスである必要があります。 動的分割ウィンドウをサポートする使い慣れたアプリケーションには、Microsoft Word と Microsoft Excel があります。

CreateStatic メンバー関数を使用して、静的分割ウィンドウを作成します。 ユーザーは、静的分割ウィンドウ内のペインのサイズのみを変更でき、番号や順序は変更できません。

静的スプリッターを作成するときは、静的スプリッターのすべてのペインを明示的に作成する必要があります。 親フレームの OnCreateClient メンバー関数が戻る前にすべてのペインを作成してください。そうしないと、フレームワークによってウィンドウが正しく表示されません。

CreateStatic メンバー関数は、行の最小高さと列幅が 0 の静的スプリッターを自動的に初期化します。 Createを呼び出した後、SetColumnInfoSetRowInfoメンバー関数を呼び出して、これらの最小値を調整します。 また、CreateStaticを呼び出して目的の理想的なウィンドウディメンションを示した後、SetColumnInfoSetRowInfoを使用します。

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

分割ウィンドウでは、特殊なスクロール バーがサポートされます (ウィンドウに表示される可能性があるスクロール バーを除く)。 これらのスクロール バーは、 CSplitterWnd オブジェクトの子であり、ウィンドウと共有されます。

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

分割ウィンドウの詳細については、「 テクニカル ノート 29を参照してください。

動的分割ウィンドウを作成する方法の詳細については、次を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CSplitterWnd

要件

ヘッダー: afxext.h

CSplitterWnd::ActivateNext

[次のウィンドウ] または [前のウィンドウ] コマンドを実行するためにフレームワークによって呼び出されます。

virtual void ActivateNext(BOOL bPrev = FALSE);

パラメーター

bPrev
アクティブにするウィンドウを示します。 TRUE 前の場合;次の FALSE

解説

このメンバー関数は、CSplitterWnd実装にデリゲートするためにCView クラスによって使用される高レベルのコマンドです。

CSplitterWnd::CanActivateNext

次のウィンドウまたは前のウィンドウのコマンドが現在可能かどうかを確認するために、フレームワークによって呼び出されます。

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

パラメーター

bPrev
アクティブにするウィンドウを示します。 TRUE 前の場合;次の FALSE

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、CSplitterWnd実装にデリゲートするためにCView クラスによって使用される高レベルのコマンドです。

CSplitterWnd::Create

動的分割ウィンドウを作成するには、 Create メンバー関数を呼び出します。

virtual BOOL Create(
    CWnd* pParentWnd,
    int nMaxRows,
    int nMaxCols,
    SIZE sizeMin,
    CCreateContext* pContext,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
    UINT nID = AFX_IDW_PANE_FIRST);

パラメーター

pParentWnd
分割ウィンドウの親フレーム ウィンドウ。

nMaxRows
分割ウィンドウ内の行の最大数。 この値は 2 を超えてはなりません。

nMaxCols
分割ウィンドウ内の列の最大数。 この値は 2 を超えてはなりません。

sizeMin
ウィンドウを表示できる最小サイズを指定します。

pContext
CCreateContext 構造体へのポインター。 ほとんどの場合、これは親フレーム ウィンドウに渡される pContext になります。

dwStyle
ウィンドウ スタイルを指定します。

nID
ウィンドウの子ウィンドウ ID。 分割ウィンドウが別の分割ウィンドウ内に入れ子になっていない限り、ID を AFX_IDW_PANE_FIRST できます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

次の手順に従って、親CFrameWndまたはCMDIChildWnd オブジェクトにCSplitterWndを埋め込むことができます。

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

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

  3. オーバーライドされたOnCreateClient内から Create メンバー関数を呼び出します。

親フレーム内から分割ウィンドウを作成する場合は、親フレームの pContext パラメーターを分割ウィンドウに渡します。 それ以外の場合は、このパラメーターを NULLできます。

動的分割ウィンドウの最初の最小行の高さと列の幅は、 sizeMin パラメーターによって設定されます。 これらの最小値は、ペイン全体を表示するには小さすぎるかどうかを決定しますが、 SetRowInfo および SetColumnInfo メンバー関数を使用して変更できます。

動的分割ウィンドウの詳細については、「ドキュメントの種類、ビュー、フレーム ウィンドウテクニカル ノート 29、およびCSplitterWnd クラスの概要記事の「分割ウィンドウ」を参照してください。

// the following function is created by the MFC Application Wizard
// when you select Split window from the User Interface Features tab:
BOOL CMyChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   return m_wndSplitter.Create(this,
                               2, 2,          // TODO: adjust the number of rows, columns
                               CSize(10, 10), // TODO: adjust the minimum pane size
                               pContext);
}

CSplitterWnd::CreateScrollBarCtrl

共有スクロール バー コントロールを作成するためにフレームワークによって呼び出されます。

virtual BOOL CreateScrollBarCtrl(
    DWORD dwStyle,
    UINT nID);

パラメーター

dwStyle
ウィンドウ スタイルを指定します。

nID
ウィンドウの子ウィンドウ ID。 分割ウィンドウが別の分割ウィンドウ内に入れ子になっていない限り、ID を AFX_IDW_PANE_FIRST できます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

スクロール バーの横に追加のコントロールを含めるには、 CreateScrollBarCtrl をオーバーライドします。 既定の動作では、通常の Windows スクロール バー コントロールを作成します。

CSplitterWnd::CreateStatic

静的分割ウィンドウを作成するには、 CreateStatic メンバー関数を呼び出します。

virtual BOOL CreateStatic(
    CWnd* pParentWnd,
    int nRows,
    int nCols,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE,
    UINT nID = AFX_IDW_PANE_FIRST);

パラメーター

pParentWnd
分割ウィンドウの親フレーム ウィンドウ。

nRows
rows の数。 この値は 16 を超えてはなりません。

nCols
columns の数。 この値は 16 を超えてはなりません。

dwStyle
ウィンドウ スタイルを指定します。

nID
ウィンドウの子ウィンドウ ID。 分割ウィンドウが別の分割ウィンドウ内に入れ子になっていない限り、ID を AFX_IDW_PANE_FIRST できます。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

通常、 CSplitterWnd は、次の手順に従って親 CFrameWnd または CMDIChildWnd オブジェクトに埋め込まれます。

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

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

  3. オーバーライドされたCFrameWnd::OnCreateClient内から CreateStatic メンバー関数を呼び出します。

静的分割ウィンドウには、多くの場合、異なるクラスの固定数のペインが含まれています。

静的分割ウィンドウを作成する場合は、そのすべてのペインを同時に作成する必要があります。 CreateViewメンバー関数は通常、この目的で使用されますが、他の非ビュー クラスも作成できます。

静的分割ウィンドウの最初の最小行の高さと列の幅は 0 です。 これらの最小値は、ペインが小さすぎて全体を表示できないタイミングを決定します。これは、 SetRowInfo および SetColumnInfo メンバー関数で変更できます。

静的分割ウィンドウにスクロール バーを追加するには、 WS_HSCROLL スタイルと WS_VSCROLL スタイルを dwStyleに追加します。

静的分割ウィンドウの詳細については、「 Multiple ドキュメントの種類、ビュー、フレーム ウィンドウテクニカル ノート 29、および CSplitterWnd クラスの概要に関する記事の「分割ウィンドウ」を参照してください。

CSplitterWnd::CreateView

静的分割ウィンドウのペインを作成します。

virtual BOOL CreateView(
    int row,
    int col,
    CRuntimeClass* pViewClass,
    SIZE sizeInit,
    CCreateContext* pContext);

パラメーター

row
新しいビューを配置する分割ウィンドウの行を指定します。

col
新しいビューを配置する分割ウィンドウ列を指定します。

pViewClass
新しいビューの CRuntimeClass を指定します。

sizeInit
新しいビューの初期サイズを指定します。

pContext
ビューの作成に使用される作成コンテキストへのポインター (通常は、分割ウィンドウが作成されている親フレームのオーバーライドされたCFrameWnd::OnCreateClientメンバー関数に渡されるpContext)。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

フレームワークがスプリッターを表示する前に、静的分割ウィンドウのすべてのペインを作成する必要があります。

フレームワークは、動的分割ウィンドウのユーザーがペイン、行、または列を分割するときに、このメンバー関数を呼び出して新しいペインを作成します。

// this function creates the panes for a static splitter window
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   m_bSplitterCreated = m_wndSplitter.CreateStatic(this, 1, 2);
   // CMyView and CMyOtherView are user-defined views derived from CView
   m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(0, 0),
                            pContext);
   m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyOtherView), CSize(0, 0),
                            pContext);

   return (m_bSplitterCreated);
}

CSplitterWnd::CSplitterWnd

CSplitterWnd オブジェクトを構築するための呼び出し。

CSplitterWnd();

解説

2 つの手順で CSplitterWnd オブジェクトを構築します。 まず、コンストラクターを呼び出し、 CSplitterWnd オブジェクトを作成してから、 Create メンバー関数を呼び出します。これにより、分割ウィンドウが作成され、 CSplitterWnd オブジェクトにアタッチされます。

CSplitterWnd::DeleteColumn

分割ウィンドウから列を削除します。

virtual void DeleteColumn(int colDelete);

パラメーター

colDelete
削除する列を指定します。

解説

このメンバー関数は、動的分割ウィンドウのロジックを実装するためにフレームワークによって呼び出されます (つまり、分割ウィンドウに SPLS_DYNAMIC_SPLIT スタイルがある場合)。 仮想関数 CreateViewと共にカスタマイズして、より高度な動的スプリッターを実装できます。

CSplitterWnd::DeleteRow

分割ウィンドウから行を削除します。

virtual void DeleteRow(int rowDelete);

パラメーター

rowDelete
削除する行を指定します。

解説

このメンバー関数は、動的分割ウィンドウのロジックを実装するためにフレームワークによって呼び出されます (つまり、分割ウィンドウに SPLS_DYNAMIC_SPLIT スタイルがある場合)。 仮想関数 CreateViewと共にカスタマイズして、より高度な動的スプリッターを実装できます。

CSplitterWnd::DeleteView

分割ウィンドウからビューを削除します。

virtual void DeleteView(
    int row,
    int col);

パラメーター

row
ビューを削除する分割ウィンドウの行を指定します。

col
ビューを削除する分割ウィンドウ列を指定します。

解説

アクティブなビューが削除されている場合は、次のビューがアクティブになります。 既定の実装では、ビューが PostNcDestroy で自動的に削除されることを前提としています。

このメンバー関数は、動的分割ウィンドウのロジックを実装するためにフレームワークによって呼び出されます (つまり、分割ウィンドウに SPLS_DYNAMIC_SPLIT スタイルがある場合)。 仮想関数 CreateViewと共にカスタマイズして、より高度な動的スプリッターを実装できます。

CSplitterWnd::DoKeyboardSplit

キーボード分割コマンド (通常は "ウィンドウ分割") を実行します。

virtual BOOL DoKeyboardSplit();

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、CSplitterWnd実装にデリゲートするためにCView クラスによって使用される高レベルのコマンドです。

CSplitterWnd::DoScroll

分割ウィンドウの同期されたスクロールを実行します。

virtual BOOL DoScroll(
    CView* pViewFrom,
    UINT nScrollCode,
    BOOL bDoScroll = TRUE);

パラメーター

pViewFrom
スクロール メッセージの発信元のビューへのポインター。

nScrollCode
ユーザーのスクロール要求を示すスクロール バー コード。 このパラメーターは、水平方向に発生するスクロールの種類を決定する下位バイトと、垂直方向に発生するスクロールの種類を決定する高次バイトの 2 つの部分で構成されます。

  • SB_BOTTOM 下にスクロールします。

  • SB_LINEDOWN 1 行下にスクロールします。

  • SB_LINEUP 1 行上にスクロールします。

  • SB_PAGEDOWN 1 ページ下にスクロールします。

  • SB_PAGEUP 1 ページ上にスクロールします。

  • SB_TOP 上にスクロールします。

bDoScroll
指定したスクロール アクションが発生するかどうかを判断します。 bDoScrollTRUEされている場合 (つまり、子ウィンドウが存在し、分割ウィンドウにスクロール範囲がある場合)、指定されたスクロール 操作が実行されます。bDoScrollFALSEされている場合 (つまり、子ウィンドウが存在しない場合、または分割ビューにスクロール範囲がない場合)、スクロールは行われません。

戻り値

同期されたスクロールが発生した場合は 0 以外。それ以外の場合は 0。

解説

このメンバー関数は、ビューがスクロール メッセージを受信したときに分割ウィンドウの同期スクロールを実行するためにフレームワークによって呼び出されます。 同期されたスクロールが許可される前にユーザーによるアクションを要求するには、オーバーライドします。

CSplitterWnd::DoScrollBy

指定されたピクセル数だけウィンドウを分割してスクロールします。

virtual BOOL DoScrollBy(
    CView* pViewFrom,
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

パラメーター

pViewFrom
スクロール メッセージの発信元のビューへのポインター。

sizeScroll
水平方向および垂直方向にスクロールするピクセル数。

bDoScroll
指定したスクロール アクションが発生するかどうかを判断します。 bDoScrollTRUEされている場合 (つまり、子ウィンドウが存在し、分割ウィンドウにスクロール範囲がある場合)、指定されたスクロール 操作が実行されます。bDoScrollFALSEされている場合 (つまり、子ウィンドウが存在しない場合、または分割ビューにスクロール範囲がない場合)、スクロールは行われません。

戻り値

同期されたスクロールが発生した場合は 0 以外。それ以外の場合は 0。

解説

このメンバー関数は、スクロール メッセージに応答してフレームワークによって呼び出され、分割ウィンドウの同期されたスクロールを、 sizeScrollで示される量 (ピクセル単位) で実行します。 正の値は、下にスクロールして右にスクロールすることを示します。負の値は、上下にスクロールすることを示します。

スクロールを許可する前にユーザーによるアクションを要求するには、オーバーライドします。

CSplitterWnd::GetActivePane

フレーム内のフォーカスビューまたはアクティブビューからアクティブペインを決定します。

virtual CWnd* GetActivePane(
    int* pRow = NULL,
    int* pCol = NULL);

パラメーター

pRow
アクティブなペインの行番号を取得する int へのポインター。

pCol
アクティブなペインの列番号を取得する int へのポインター。

戻り値

アクティブなペインへのポインター。 NULL アクティブなウィンドウが存在しない場合は 。

解説

このメンバー関数は、分割ウィンドウ内のアクティブなウィンドウを決定するためにフレームワークによって呼び出されます。 アクティブなウィンドウを取得する前にユーザーによる操作を要求するには、オーバーライドします。

CSplitterWnd::GetColumnCount

現在のペイン列数を返します。

int GetColumnCount() const;

戻り値

スプリッター内の現在の列数を返します。 静的スプリッターの場合、これは列の最大数でもあります。

CSplitterWnd::GetColumnInfo

指定した列の情報を返します。

void GetColumnInfo(
    int col,
    int& cxCur,
    int& cxMin) const;

パラメーター

col
列を指定します。

cxCur
列の現在の幅に設定する int への参照。

cxMin
列の現在の最小幅に設定する int への参照。

CSplitterWnd::GetPane

指定した行と列のペインを返します。

CWnd* GetPane(
    int row,
    int col) const;

パラメーター

row
行を指定します。

col
列を指定します。

戻り値

指定した行と列のペインを返します。 通常、返されるウィンドウは CView派生クラスです。

CSplitterWnd::GetRowCount

現在のペイン行数を返します。

int GetRowCount() const;

戻り値

分割ウィンドウ内の現在の行数を返します。 静的分割ウィンドウの場合、これは行の最大数でもあります。

CSplitterWnd::GetRowInfo

指定した行に関する情報を返します。

void GetRowInfo(
    int row,
    int& cyCur,
    int& cyMin) const;

パラメーター

row
行を指定します。

cyCur
行の現在の高さをピクセル単位で設定する int への参照。

cyMin
行の現在の最小高さ (ピクセル単位) に設定する int への参照。

解説

このメンバー関数を呼び出して、指定した行に関する情報を取得します。 cyCur パラメーターには、指定した行の現在の高さが入力され、cyMinには行の最小の高さが入力されます。

CSplitterWnd::GetScrollStyle

分割ウィンドウの共有スクロール バー スタイルを返します。

DWORD GetScrollStyle() const;

戻り値

成功した場合は、次のウィンドウ スタイル フラグの 1 つ以上。

  • WS_HSCROLL スプリッターが現在、共有水平スクロール バーを管理している場合。

  • WS_VSCROLL スプリッターが現在、共有垂直スクロール バーを管理している場合。

ゼロの場合、分割ウィンドウは現在、共有スクロール バーを管理しません。

CSplitterWnd::IdFromRowCol

指定した行と列にあるペインの子ウィンドウ ID を取得します。

int IdFromRowCol(
    int row,
    int col) const;

パラメーター

row
分割ウィンドウの行を指定します。

col
分割ウィンドウ列を指定します。

戻り値

ウィンドウの子ウィンドウ ID。

解説

このメンバー関数は、ウィンドウとして非ビューを作成するために使用され、ペインが存在する前に呼び出すことができます。

HBRUSH CMySplitterWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CSplitterWnd::OnCtlColor(pDC, pWnd, nCtlColor);

   if (nCtlColor == CTLCOLOR_LISTBOX &&
       pWnd->GetDlgCtrlID() == IdFromRowCol(1, 0))
   {
      // Pane 1,0 is a list box. Set the color of the text to be blue.
      pDC->SetBkColor(m_BkColor);
      pDC->SetTextColor(RGB(0, 0, 255));
      return (HBRUSH)m_hbrListBoxBkgnd.GetSafeHandle();
   }
   // TODO: Return a different brush if the default is not desired
   return hbr;
}

CSplitterWnd::IsChildPane

pWndがこの分割ウィンドウの子ウィンドウであるかどうかを判断します。

BOOL IsChildPane(
    CWnd* pWnd,
    int* pRow,
    int* pCol);

パラメーター

pWnd
テストする CWnd オブジェクトへのポインター。

pRow
行番号を格納する int へのポインター。

pCol
列番号を格納する int へのポインター。

戻り値

0 以外の場合、 pWnd は現在、この分割ウィンドウの子ウィンドウであり、 pRowpCol は分割ウィンドウ内のウィンドウの位置で塗りつぶされます。 pWndがこの分割ウィンドウの子ウィンドウでない場合は、0 が返されます。

解説

6.0 より前の Visual C++ バージョンでは、この関数は次のように定義されていました。

BOOL IsChildPane(CWnd* pWnd, int& row, int& col);

現在、このバージョンは古くなっており、使用しないでください。

CSplitterWnd::IsTracking

このメンバー関数を呼び出して、ウィンドウ内の分割バーが現在移動されているかどうかを確認します。

BOOL IsTracking();

戻り値

分割操作が進行中の場合は 0 以外。それ以外の場合は 0。

CSplitterWnd::OnDrawSplitter

分割ウィンドウのイメージをレンダリングします。

virtual void OnDrawSplitter(
    CDC* pDC,
    ESplitType nType,
    const CRect& rect);

パラメーター

pDC
描画するデバイス コンテキストへのポインター。 pDCNULLされている場合、CWnd::RedrawWindowはフレームワークによって呼び出され、分割ウィンドウは描画されません。

nType
enum ESplitTypeの値。次のいずれかになります。

  • splitBox 分割ドラッグ ボックス。

  • splitBar 2 つの分割ウィンドウの間に表示されるバー。

  • splitIntersection 分割ウィンドウの交差部分。 Windows 95/98 で実行されている場合、この要素は呼び出されません。

  • splitBorder 分割ウィンドウの境界線。

rect
分割ウィンドウのサイズと形状を指定する CRect オブジェクトへの参照。

解説

このメンバー関数は、分割ウィンドウの正確な特性を描画および指定するためにフレームワークによって呼び出されます。 分割ウィンドウのさまざまなグラフィカル コンポーネントの画像を高度にカスタマイズするには、 OnDrawSplitter をオーバーライドします。 既定の画像は、分割バーの交差部分がブレンドされる点で、Microsoft Works for Windows または Microsoft Windows 95/98 のスプリッターに似ています。

動的分割ウィンドウの詳細については、「ドキュメントの種類、ビュー、フレーム ウィンドウテクニカル ノート 29、およびCSplitterWnd クラスの概要記事の「分割ウィンドウ」を参照してください。

CSplitterWnd::OnInvertTracker

分割ウィンドウのイメージをフレーム ウィンドウと同じサイズと形状にレンダリングします。

virtual void OnInvertTracker(const CRect& rect);

パラメーター

rect
追跡する四角形を指定する CRect オブジェクトへの参照。

解説

このメンバー関数は、スプリッターのサイズ変更中にフレームワークによって呼び出されます。 分割ウィンドウの画像を高度にカスタマイズするには、 OnInvertTracker をオーバーライドします。 既定の画像は、分割バーの交差部分がブレンドされる点で、Microsoft Works for Windows または Microsoft Windows 95/98 のスプリッターに似ています。

動的分割ウィンドウの詳細については、「ドキュメントの種類、ビュー、フレーム ウィンドウテクニカル ノート 29、およびCSplitterWnd クラスの概要記事の「分割ウィンドウ」を参照してください。

CSplitterWnd::RecalcLayout

行または列のサイズを調整した後、分割ウィンドウを再表示する呼び出し。

virtual void RecalcLayout();

解説

SetRowInfoおよびSetColumnInfoメンバー関数を使用して行と列のサイズを調整した後、分割ウィンドウを正しく再表示するには、このメンバー関数を呼び出します。 分割ウィンドウが表示される前に作成プロセスの一環として行と列のサイズを変更する場合、このメンバー関数を呼び出す必要はありません。

フレームワークは、ユーザーが分割ウィンドウのサイズを変更したり、分割を移動したりするたびに、このメンバー関数を呼び出します。

CSplitterWnd::SetColumnInfo の例を参照してください。

CSplitterWnd::SetActivePane

ウィンドウをフレーム内のアクティブなウィンドウに設定します。

virtual void SetActivePane(
    int row,
    int col,
    CWnd* pWnd = NULL);

パラメーター

row
pWndNULL場合は、アクティブになるペイン内の行を指定します。

col
pWndNULLされている場合は、アクティブになるペイン内の列を指定します。

pWnd
CWnd オブジェクトを指すポインターです。 NULL場合、rowおよびcolで指定されたペインがアクティブに設定されます。 NULLしない場合は、アクティブに設定されているペインを指定します。

解説

このメンバー関数は、ユーザーがフレーム ウィンドウ内のペインにフォーカスを変更したときに、ウィンドウをアクティブとして設定するためにフレームワークによって呼び出されます。 SetActivePaneを明示的に呼び出して、指定したビューにフォーカスを変更できます。

pWndを指定して、行と列またはのいずれかを指定してペインを指定します。

CSplitterWnd::SetColumnInfo

指定した列情報を設定する呼び出し。

void SetColumnInfo(
    int col,
    int cxIdeal,
    int cxMin);

パラメーター

col
分割ウィンドウ列を指定します。

cxIdeal
分割ウィンドウ列の理想的な幅をピクセル単位で指定します。

cxMin
分割ウィンドウ列の最小幅をピクセル単位で指定します。

解説

このメンバー関数を呼び出して、列の新しい最小幅と理想的な幅を設定します。 列の最小値によって、列が小さすぎて完全に表示できないタイミングが決まります。

フレームワークは、分割ウィンドウを表示すると、理想的なディメンションに従って列と行のペインをレイアウトし、スプリッター ウィンドウのクライアント領域の左上隅から右下隅に移動します。

void CChildFrame::OnSize(UINT nType, int cx, int cy)
{
   CMDIChildWnd::OnSize(nType, cx, cy);

   CRect rect;
   GetWindowRect(&rect);
   if (m_bSplitterCreated) // m_bSplitterCreated set in OnCreateClient
   {
      m_wndSplitter.SetColumnInfo(0, rect.Width() / 2, 10);
      m_wndSplitter.SetColumnInfo(1, rect.Width() / 2, 10);
      m_wndSplitter.RecalcLayout();
   }
}

CSplitterWnd::SetRowInfo

指定した行情報を設定する呼び出し。

void SetRowInfo(
    int row,
    int cyIdeal,
    int cyMin);

パラメーター

row
分割ウィンドウの行を指定します。

cyIdeal
分割ウィンドウ行の理想的な高さをピクセル単位で指定します。

cyMin
分割ウィンドウ行の最小高さをピクセル単位で指定します。

解説

このメンバー関数を呼び出して、行の新しい最小高さと理想的な高さを設定します。 行の最小値によって、行が小さすぎて完全に表示できないタイミングが決まります。

フレームワークは、分割ウィンドウを表示すると、理想的なディメンションに従って列と行のペインをレイアウトし、スプリッター ウィンドウのクライアント領域の左上隅から右下隅に移動します。

CSplitterWnd::SetScrollStyle

分割ウィンドウの共有スクロール バーサポートの新しいスクロール スタイルを指定します。

void SetScrollStyle(DWORD dwStyle);

パラメーター

dwStyle
分割ウィンドウの共有スクロール バーサポートの新しいスクロール スタイル。次のいずれかの値を指定できます。

  • WS_HSCROLL 水平共有スクロール バーを作成/表示します。

  • WS_VSCROLL 垂直共有スクロール バーを作成/表示します。

解説

スクロール バーが作成されると、そのスタイルなしで SetScrollStyle が呼び出された場合でも、スクロール バーは破棄されません。代わりに、これらのスクロール バーは非表示になります。 これにより、スクロール バーが非表示になっている場合でも、スクロール バーの状態を保持できます。 SetScrollStyleを呼び出した後、すべての変更を有効にするには、RecalcLayoutを呼び出す必要があります。

CSplitterWnd::SplitColumn

フレーム ウィンドウが垂直方向に分割される場所を示します。

virtual BOOL SplitColumn(int cxBefore);

パラメーター

cxBefore
分割が発生する前の位置 (ピクセル単位)。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、垂直分割ウィンドウが作成されるときに呼び出されます。 SplitColumn は、分割が行われる既定の場所を示します。

SplitColumn は、動的分割ウィンドウのロジックを実装するためにフレームワークによって呼び出されます (つまり、分割ウィンドウに SPLS_DYNAMIC_SPLIT スタイルがある場合)。 仮想関数 CreateViewと共にカスタマイズして、より高度な動的スプリッターを実装できます。

CSplitterWnd::SplitRow

フレーム ウィンドウが水平方向に分割される場所を示します。

virtual BOOL SplitRow(int cyBefore);

パラメーター

cyBefore
分割が発生する前の位置 (ピクセル単位)。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、水平分割ウィンドウが作成されるときに呼び出されます。 SplitRow は、分割が行われる既定の場所を示します。

SplitRow は、動的分割ウィンドウのロジックを実装するためにフレームワークによって呼び出されます (つまり、分割ウィンドウに SPLS_DYNAMIC_SPLIT スタイルがある場合)。 仮想関数 CreateViewと共にカスタマイズして、より高度な動的スプリッターを実装できます。

CSplitterWnd::OnDraw

分割ウィンドウを描画するためにフレームワークによって呼び出されます。

virtual void OnDraw(CDC* pDC);

パラメーター

pDC
デバイス コンテキストへのポインター。

解説

関連項目

MFC サンプル VIEWEX
CWnd クラス
階層図
CView クラス