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
オブジェクトを作成します。
親フレームに
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
メンバー関数を呼び出して、これらの最小値を調整します。 また、CreateStatic
を呼び出して目的の理想的なウィンドウディメンションを示した後、SetColumnInfo
とSetRowInfo
を使用します。
静的スプリッターの個々のペインは、多くの場合、異なるクラスに属しています。 静的分割ウィンドウの例については、グラフィックス エディターと Windows ファイル マネージャーを参照してください。
分割ウィンドウでは、特殊なスクロール バーがサポートされます (ウィンドウに表示される可能性があるスクロール バーを除く)。 これらのスクロール バーは、 CSplitterWnd
オブジェクトの子であり、ウィンドウと共有されます。
分割ウィンドウを作成するときに、これらの特殊なスクロール バーを作成します。 たとえば、1 つの行、2 つの列、およびWS_VSCROLL
スタイルを持つCSplitterWnd
には、2 つのペインで共有される垂直スクロール バーが表示されます。 ユーザーがスクロール バーを移動すると、 WM_VSCROLL
メッセージが両方のウィンドウに送信されます。 ウィンドウでスクロール バーの位置を設定すると、共有スクロール バーが設定されます。
分割ウィンドウの詳細については、「 テクニカル ノート 29を参照してください。
動的分割ウィンドウを作成する方法の詳細については、次を参照してください。
継承階層
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
を埋め込むことができます。
親フレームに
CSplitterWnd
メンバー変数を埋め込みます。親フレームの
CFrameWnd::OnCreateClient
メンバー関数をオーバーライドします。オーバーライドされた
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
オブジェクトに埋め込まれます。
親フレームに
CSplitterWnd
メンバー変数を埋め込みます。親フレームの
OnCreateClient
メンバー関数をオーバーライドします。オーバーライドされた
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
指定したスクロール アクションが発生するかどうかを判断します。 bDoScroll
がTRUE
されている場合 (つまり、子ウィンドウが存在し、分割ウィンドウにスクロール範囲がある場合)、指定されたスクロール 操作が実行されます。bDoScroll
がFALSE
されている場合 (つまり、子ウィンドウが存在しない場合、または分割ビューにスクロール範囲がない場合)、スクロールは行われません。
戻り値
同期されたスクロールが発生した場合は 0 以外。それ以外の場合は 0。
解説
このメンバー関数は、ビューがスクロール メッセージを受信したときに分割ウィンドウの同期スクロールを実行するためにフレームワークによって呼び出されます。 同期されたスクロールが許可される前にユーザーによるアクションを要求するには、オーバーライドします。
CSplitterWnd::DoScrollBy
指定されたピクセル数だけウィンドウを分割してスクロールします。
virtual BOOL DoScrollBy(
CView* pViewFrom,
CSize sizeScroll,
BOOL bDoScroll = TRUE);
パラメーター
pViewFrom
スクロール メッセージの発信元のビューへのポインター。
sizeScroll
水平方向および垂直方向にスクロールするピクセル数。
bDoScroll
指定したスクロール アクションが発生するかどうかを判断します。 bDoScroll
がTRUE
されている場合 (つまり、子ウィンドウが存在し、分割ウィンドウにスクロール範囲がある場合)、指定されたスクロール 操作が実行されます。bDoScroll
がFALSE
されている場合 (つまり、子ウィンドウが存在しない場合、または分割ビューにスクロール範囲がない場合)、スクロールは行われません。
戻り値
同期されたスクロールが発生した場合は 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
は現在、この分割ウィンドウの子ウィンドウであり、 pRow
と pCol
は分割ウィンドウ内のウィンドウの位置で塗りつぶされます。 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
描画するデバイス コンテキストへのポインター。 pDC
がNULL
されている場合、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
pWnd
がNULL
場合は、アクティブになるペイン内の行を指定します。
col
pWnd
がNULL
されている場合は、アクティブになるペイン内の列を指定します。
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
デバイス コンテキストへのポインター。