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
四角形の現在のサイズへのポインター。 (四角形のサイズは、その高さと幅によって指定されます)。

解説

この関数の既定の動作では、反転が許可された状態で TrackTrackRubberBand が呼び出された場合にのみ、四角形の向きを変更できます。

ドラッグ操作中に追跡四角形の調整を制御するには、この関数をオーバーライドします。 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 -1

  • CRectTracker::hitTopLeft 0

  • CRectTracker::hitTopRight 1

  • CRectTracker::hitBottomRight 2

  • CRectTracker::hitBottomLeft 3

  • CRectTracker::hitTop 4

  • CRectTracker::hitRight 5

  • CRectTracker::hitBottom 6

  • CRectTracker::hitLeft 7

  • CRectTracker::hitMiddle 8

CRectTracker::m_nHandleSize

CRectTrackerサイズ変更ハンドルのサイズ (ピクセル単位)。

int m_nHandleSize;

解説

既定のシステム値で初期化されます。

CRectTracker::m_rect

クライアント座標 (ピクセル) での四角形の現在の位置。

CRect m_rect;

CRectTracker::m_sizeMin

四角形の最小サイズ。

CSize m_sizeMin;

解説

既定値 cxcyの両方が、境界線の幅の既定のシステム値から計算されます。 このデータ メンバーは、 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 キーを押すか、マウスの右ボタンを押すまでマウスをキャプチャします。 ユーザーがマウス カーソルを移動すると、 DrawTrackerRectOnChangedRectを呼び出すことによってフィードバックが更新されます。

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 キーを押すか、マウスの右ボタンを押すまでマウスをキャプチャします。 ユーザーがマウス カーソルを移動すると、 DrawTrackerRectOnChangedRectを呼び出すことによってフィードバックが更新されます。

トラッキングは、右下ハンドルからラバーバンドタイプを選択して実行されます。 反転が許可されている場合は、上下または右にドラッグすることで、四角形のサイズを調整できます。

関連項目

MFC サンプル トラッカー
MFC サンプル DRAWCLI
階層図
COleResizeBar クラス
CRect クラス