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
内部から、またはCreateStatic
メンバー関数CSplitterWnd
をCreate
呼び出します。
メンバー関数を 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 を参照してください。
動的分割ウィンドウを作成する方法の詳細については、次を参照してください。
継承階層
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
むことができます。
親フレームに
CSplitterWnd
メンバー変数を埋め込みます。親フレームのメンバー関数を
CFrameWnd::OnCreateClient
オーバーライドします。オーバーライド
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
オブジェクトに埋め込まれます。
親フレームに
CSplitterWnd
メンバー変数を埋め込みます。親フレームのメンバー関数を
OnCreateClient
オーバーライドします。オーバーライド
CFrameWnd::OnCreateClient
されたCreateStatic
内からメンバー関数を呼び出します。
静的分割ウィンドウには、多くの場合、異なるクラスの固定数のペインが含まれています。
静的分割ウィンドウを作成する場合は、そのすべてのペインを同時に作成する必要があります。 メンバー関数は CreateView
通常、この目的で使用されますが、他の非ビュー クラスも作成できます。
静的分割ウィンドウの最初の最小行の高さと列の幅は 0 です。 これらの最小値は、ペインが小さすぎて全体を表示できないタイミングを決定します。これらの最小値は、and SetColumnInfo
メンバー関数を使用してSetRowInfo
変更できます。
静的分割ウィンドウにスクロール バーを追加するには、次にスクロール バーとスタイルをWS_HSCROLL
追加しますdwStyle
。WS_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
(つまり、子ウィンドウが存在し、分割ウィンドウにスクロール範囲がある場合) は、指定されたスクロール 操作を実行bDoScroll
FALSE
できます。つまり、子ウィンドウが存在しない場合、または分割ビューにスクロール範囲がない場合は、スクロールは行われません。
戻り値
同期されたスクロールが発生した場合は 0 以外。それ以外の場合は 0。
解説
このメンバー関数は、ビューがスクロール メッセージを受信したときに分割ウィンドウの同期スクロールを実行するためにフレームワークによって呼び出されます。 同期されたスクロールが許可される前にユーザーによるアクションを要求するには、オーバーライドします。
CSplitterWnd::DoScrollBy
指定されたピクセル数だけウィンドウを分割してスクロールします。
virtual BOOL DoScrollBy(
CView* pViewFrom,
CSize sizeScroll,
BOOL bDoScroll = TRUE);
パラメーター
pViewFrom
スクロール メッセージの発信元のビューへのポインター。
sizeScroll
水平方向および垂直方向にスクロールするピクセル数。
bDoScroll
指定したスクロール アクションが発生するかどうかを判断します。 そのTRUE
場合 bDoScroll
(つまり、子ウィンドウが存在し、分割ウィンドウにスクロール範囲がある場合) は、指定されたスクロール 操作を実行bDoScroll
FALSE
できます。つまり、子ウィンドウが存在しない場合、または分割ビューにスクロール範囲がない場合は、スクロールは行われません。
戻り値
同期されたスクロールが発生した場合は 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
現在、この分割ウィンドウの子ウィンドウでありpCol
pRow
、分割ウィンドウ内のペインの位置が入力されます。 この分割ウィンドウの子ウィンドウでない場合 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
、ペインが指定されcol
row
、アクティブに設定されます。 設定されていない 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
デバイス コンテキストへのポインター。
解説
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示