CRectTracker クラス
項目をさまざまな方法で表示、移動、およびサイズ変更できるようにします。
構文
class CRectTracker
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CRectTracker::CRectTracker | CRectTracker オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CRectTracker::AdjustRect | 四角形のサイズが変更されたときに呼び出されます。 |
CRectTracker::D raw | 四角形をレンダリングします。 |
CRectTracker::D rawTrackerRect | CRectTracker オブジェクトの境界線を描画するときに呼び出されます。 |
CRectTracker::GetHandleMask | CRectTracker 項目のサイズ変更ハンドルのマスクを取得するために呼び出されます。 |
CRectTracker::GetTrueRect | サイズ変更ハンドルなど、四角形の幅と高さを返します。 |
CRectTracker::HitTest | CRectTracker オブジェクトに関連するカーソルの現在位置を返します。 |
CRectTracker::NormalizeHit | ヒット テスト コードを正規化します。 |
CRectTracker::OnChangedRect | 四角形のサイズが変更または移動されたときに呼び出されます。 |
CRectTracker::SetCursor | 四角形上の位置に応じてカーソルを設定します。 |
CRectTracker::Track | ユーザーが四角形を操作できるようにします。 |
CRectTracker::TrackRubberBand | ユーザーが選択範囲を "ゴムバンド" できるようにします。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CRectTracker::m_nHandleSize | サイズ変更ハンドルのサイズを決定します。 |
CRectTracker::m_nStyle | トラッカーの現在のスタイル。 |
CRectTracker::m_rect | 四角形の現在の位置 (ピクセル単位)。 |
CRectTracker::m_sizeMin | 最小四角形の幅と高さを指定します。 |
解説
CRectTracker
には基底クラスはありません。
CRectTracker
クラスは、ユーザーがグラフィカル インターフェイスを使用して OLE 項目を操作できるように設計されていますが、その使用は OLE 対応アプリケーションに限定されません。 このようなユーザー インターフェイスが必要な場所であればどこでも使用できます。
CRectTracker
罫線には、実線または点線を使用できます。 項目には、ハッチングされた境界線を付けたり、ハッチングパターンを重ねてアイテムのさまざまな状態を示したりすることができます。 アイテムの外側または内側の境界線に 8 つのサイズ変更ハンドルを配置できます。 (サイズ変更ハンドルの説明については、 を参照してください。GetHandleMask.)最後に、 CRectTracker
を使用すると、サイズ変更中に項目の向きを変更できます。
CRectTracker
を使用するには、CRectTracker
オブジェクトを作成し、初期化する表示状態を指定します。 その後、このインターフェイスを使用して、 CRectTracker
オブジェクトに関連付けられている OLE 項目の現在の状態に関する視覚的なフィードバックをユーザーに提供できます。
CRectTracker
の使用方法の詳細については、Trackersに関する記事を参照してください。
継承階層
CRectTracker
要件
Header: afxext.h
CRectTracker::AdjustRect
サイズ変更ハンドルを使用して追跡四角形のサイズを変更するときにフレームワークによって呼び出されます。
virtual void AdjustRect(
int nHandle,
LPRECT lpRect);
パラメーター
nHandle
使用されるハンドルのインデックス。
lpRect
四角形の現在のサイズへのポインター。 (四角形のサイズは、その高さと幅によって指定されます)。
解説
この関数の既定の動作では、反転が許可された状態で Track
と TrackRubberBand
が呼び出された場合にのみ、四角形の向きを変更できます。
ドラッグ操作中に追跡四角形の調整を制御するには、この関数をオーバーライドします。 1 つの方法は、戻る前に lpRect で指定された座標を調整する方法です。
この関数をオーバーライドすることで、グリッドへのスナップや縦横比の維持など、 CRectTracker
で直接サポートされていない特殊な機能を実装できます。
CRectTracker::CRectTracker
CRectTracker
オブジェクトを作成して初期化します。
CRectTracker();
CRectTracker(
LPCRECT lpSrcRect,
UINT nStyle);
パラメーター
lpSrcRect
四角形オブジェクトの座標。
nStyle
CRectTracker
オブジェクトのスタイルを指定します。 次のスタイルがサポートされています。
CRectTracker::solidLine
四角形の境界線には実線を使用します。CRectTracker::dottedLine
四角形の境界線には点線を使用します。CRectTracker::hatchedBorder
四角形の境界線にハッチング パターンを使用します。CRectTracker::resizeInside
四角形内にあるハンドルのサイズを変更します。CRectTracker::resizeOutside
四角形の外側にあるハンドルのサイズを変更します。CRectTracker::hatchInside
ハッチングパターンは四角形全体を覆います。
解説
既定のコンストラクターは、 CRectTracker
オブジェクトを lpSrcRect の値で初期化し、他のサイズをシステムの既定値に初期化します。 オブジェクトがパラメーターなしで作成された場合、 m_rect
および m_nStyle
データ メンバーは初期化されません。
CRectTracker::D raw
四角形の外側の線と内側の領域を描画するには、この関数を呼び出します。
void Draw(CDC* pDC) const;
パラメーター
pDC
描画するデバイス コンテキストへのポインター。
解説
トラッカーのスタイルによって、描画の実行方法が決まります。 使用可能なスタイルの詳細については、 CRectTracker
のコンストラクターを参照してください。
CRectTracker::D rawTrackerRect
Track
またはTrackRubberBand
メンバー関数内でトラッカーの位置が変更されるたびにフレームワークによって呼び出されます。
virtual void DrawTrackerRect(
LPCRECT lpRect,
CWnd* pWndClipTo,
CDC* pDC,
CWnd* pWnd);
パラメーター
lpRect
描画する四角形を含む RECT
へのポインター。
pWndClipTo
四角形のクリッピングに使用するウィンドウへのポインター。
pDC
描画するデバイス コンテキストへのポインター。
pWnd
図面が表示されるウィンドウへのポインター。
解説
既定の実装では、点線の四角形を描画する CDC::DrawFocusRect
を呼び出します。
追跡操作中に異なるフィードバックを提供するには、この関数をオーバーライドします。
CRectTracker::GetHandleMask
フレームワークは、このメンバー関数を呼び出して、四角形のサイズ変更ハンドルのマスクを取得します。
virtual UINT GetHandleMask() const;
戻り値
CRectTracker
項目のサイズ変更ハンドルのマスク。
解説
サイズ変更ハンドルは四角形の側面と角に表示され、ユーザーは四角形の形状とサイズを制御できます。
四角形には、0 から 7 の番号が付いた 8 つのサイズ変更ハンドルがあります。 各サイズ変更ハンドルは、マスク内のビットによって表されます。そのビットの値は 2^ n です。ここで、 n はサイズ変更ハンドル番号です。 ビット 0 から 3 は、左上から時計回りに移動する角のサイズ変更ハンドルに対応します。 ビット 4 から 7 は、時計回りの上部から始まるサイド サイズ変更ハンドルに対応します。 次の図は、四角形のサイズ変更ハンドルとそれに対応するサイズ変更ハンドルの数値と値を示しています。
GetHandleMask
の既定の実装では、サイズ変更ハンドルが表示されるようにビットのマスクが返されます。 1 ビットがオンの場合、対応するサイズ変更ハンドルが描画されます。
指定されたサイズ変更ハンドルを非表示または表示するには、このメンバー関数をオーバーライドします。
CRectTracker::GetTrueRect
四角形の座標を取得するには、この関数を呼び出します。
void GetTrueRect(LPRECT lpTrueRect) const;
パラメーター
lpTrueRect
CRectTracker
オブジェクトのデバイス座標を格納するRECT
構造体へのポインター。
解説
四角形の寸法には、外側の境界線にあるサイズ変更ハンドルの高さと幅が含まれます。 戻ると、 lpTrueRect は常にデバイス座標で正規化された四角形です。
CRectTracker::HitTest
この関数を呼び出して、ユーザーがサイズ変更ハンドルをつかんだかどうかを調べます。
int HitTest(CPoint point) const;
パラメーター
point
テストするポイント (デバイス座標)。
戻り値
返される値は、 CRectTracker::TrackerHit
列挙型に基づいており、次のいずれかの値を持つことができます。
CRectTracker::hitNothing
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::hitMiddle
8
CRectTracker::m_nHandleSize
CRectTracker
サイズ変更ハンドルのサイズ (ピクセル単位)。
int m_nHandleSize;
解説
既定のシステム値で初期化されます。
CRectTracker::m_rect
クライアント座標 (ピクセル) での四角形の現在の位置。
CRect m_rect;
CRectTracker::m_sizeMin
四角形の最小サイズ。
CSize m_sizeMin;
解説
既定値 cx
と cy
の両方が、境界線の幅の既定のシステム値から計算されます。 このデータ メンバーは、 AdjustRect
メンバー関数でのみ使用されます。
CRectTracker::m_nStyle
四角形の現在のスタイル。
UINT m_nStyle;
解説
使用可能なスタイルの一覧については、 CRectTracker::CRectTracker を参照してください。
CRectTracker::NormalizeHit
この関数を呼び出して、反転する可能性があるハンドルを変換します。
int NormalizeHit(int nHandle) const;
パラメーター
nHandle
ユーザーが選択したハンドル。
戻り値
正規化されたハンドルのインデックス。
解説
反転を許可して CRectTracker::Track
または CRectTracker::TrackRubberBand
を呼び出すと、四角形を x 軸、y 軸、またはその両方で反転できます。 この場合、 HitTest
は四角形に対しても反転されたハンドルを返します。 フィードバックは、変更される四角形データ構造の部分ではなく、四角形の画面位置に依存するため、これはカーソルフィードバックを描画するには適していません。
CRectTracker::OnChangedRect
Track
の呼び出し中にトラッカーの四角形が変更されるたびにフレームワークによって呼び出されます。
virtual void OnChangedRect(const CRect& rectOld);
パラメーター
rectOld
CRectTracker
オブジェクトの古いデバイス座標を格納します。
解説
この関数が呼び出された時点で、 DrawTrackerRect
で描画されたすべてのフィードバックが削除されました。 この関数の既定の実装は、何も行いません。
四角形のサイズが変更された後にアクションを実行する場合は、この関数をオーバーライドします。
CRectTracker::SetCursor
この関数を呼び出して、カーソルの図形が CRectTracker
オブジェクトの領域を超えている間にカーソルの図形を変更します。
BOOL SetCursor(
CWnd* pWnd,
UINT nHitTest) const;
パラメーター
pWnd
現在カーソルが含まれているウィンドウをポイントします。
nHitTest
WM_SETCURSOR メッセージからの前のヒット テストの結果。
戻り値
前のヒットがトラッカーの四角形を超えた場合は 0 以外。それ以外の場合は 0。
解説
この関数は、WM_SETCURSOR メッセージ (通常は OnSetCursor
) を処理するウィンドウの関数内から呼び出します。
CRectTracker::Track
四角形のサイズを変更するためのユーザー インターフェイスを表示するには、この関数を呼び出します。
BOOL Track(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = FALSE,
CWnd* pWndClipTo = NULL);
パラメーター
pWnd
四角形を含むウィンドウ オブジェクト。
point
クライアント領域に対する現在のマウス位置のデバイス座標。
bAllowInvert
TRUE の場合、四角形は x 軸または y 軸に沿って反転できます。それ以外の場合は FALSE。
pWndClipTo
描画操作がクリップされるウィンドウ。 NULL の場合、クリッピング四角形として pWnd が使用されます。
戻り値
ESC キーを押すと、追跡プロセスが停止し、トラッカーに格納されている四角形は変更されず、0 が返されます。 変更がコミットされると、マウスを動かしてマウスの左ボタンを離すと、新しい位置やサイズがトラッカーの四角形に記録され、0 以外の値が返されます。
解説
これは通常、 WM_LBUTTONDOWN
メッセージ (通常は OnLButtonDown
) を処理するアプリケーションの関数内から呼び出されます。
この関数は、ユーザーがマウスの左ボタンを離すか、Esc キーを押すか、マウスの右ボタンを押すまでマウスをキャプチャします。 ユーザーがマウス カーソルを移動すると、 DrawTrackerRect
と OnChangedRect
を呼び出すことによってフィードバックが更新されます。
bAllowInvert が TRUE の場合、追跡の四角形は x 軸または y 軸で反転できます。
CRectTracker::TrackRubberBand
この関数を呼び出して、ゴムバンドの選択を行います。
BOOL TrackRubberBand(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = TRUE);
パラメーター
pWnd
四角形を含むウィンドウ オブジェクト。
point
クライアント領域に対する現在のマウス位置のデバイス座標。
bAllowInvert
TRUE の場合、四角形は x 軸または y 軸に沿って反転できます。それ以外の場合は FALSE。
戻り値
マウスが移動し、四角形が空でない場合は 0 以外。それ以外の場合は 0。
解説
これは通常、WM_LBUTTONDOWN メッセージ (通常は OnLButtonDown
) を処理するアプリケーションの関数内から呼び出されます。
この関数は、ユーザーがマウスの左ボタンを離すか、Esc キーを押すか、マウスの右ボタンを押すまでマウスをキャプチャします。 ユーザーがマウス カーソルを移動すると、 DrawTrackerRect
と OnChangedRect
を呼び出すことによってフィードバックが更新されます。
トラッキングは、右下ハンドルからラバーバンドタイプを選択して実行されます。 反転が許可されている場合は、上下または右にドラッグすることで、四角形のサイズを調整できます。
関連項目
MFC サンプル トラッカー
MFC サンプル DRAWCLI
階層図
COleResizeBar クラス
CRect クラス