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内部から、またはCreateStaticメンバー関数CSplitterWndCreate呼び出します。

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

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

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

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

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

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

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

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

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

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

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

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

継承階層

CObject

CCmdTarget

CWnd

CSplitterWnd

必要条件

ヘッダー:afxext.h

CSplitterWnd::ActivateNext

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

virtual void ActivateNext(BOOL bPrev = FALSE);

パラメーター

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

解説

このメンバー関数は、クラスが実装に委任するために使用 CView する高度な CSplitterWnd コマンドです。

CSplitterWnd::CanActivateNext

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

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

パラメーター

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

戻り値

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

解説

このメンバー関数は、クラスが実装に委任するために使用 CView する高度な CSplitterWnd コマンドです。

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オブジェクトに a を埋め込CSplitterWndむことができます。

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

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

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

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

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

動的分割ウィンドウの詳細については、「複数のドキュメントの種類、ビュー、フレーム ウィンドウ」、「テクニカル ノート 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 を返します。

解説

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

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

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

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

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

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

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

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

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

CSplitterWnd::CreateView

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

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

パラメーター

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

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

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

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

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

戻り値

正常終了した場合は 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 を返します。

解説

このメンバー関数は、クラスが実装に委任するために使用 CView する高度な CSplitterWnd コマンドです。

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

戻り値

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

解説

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

CSplitterWnd::DoScrollBy

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

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

パラメーター

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

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

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

戻り値

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

解説

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

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

CSplitterWnd::GetActivePane

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

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

パラメーター

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

pCol
アクティブなペインの列番号を取得する a への 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、返されるペインは -derived クラスです。

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現在、この分割ウィンドウの子ウィンドウでありpColpRow、分割ウィンドウ内のペインの位置が入力されます。 この分割ウィンドウの子ウィンドウでない場合 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
描画するデバイス コンテキストへのポインター。 の場合 pDCNULLCWnd::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();

解説

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

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

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

CSplitterWnd::SetActivePane

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

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

パラメーター

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

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

pWnd
CWnd オブジェクトを指すポインターです。 の場合NULL、ペインが指定されcolrow、アクティブに設定されます。 設定されていない 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 クラス