分享方式:


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 框線可以是實線或虛線。 專案可以指定影線框線,或以影線圖樣覆寫,以指出專案的不同狀態。 您可以在專案外部或內框線上放置八個重設大小控點。 (如需重設大小控點的說明,請參閱 GetHandleMask.)最後, CRectTracker 可讓您在重設大小期間變更專案的方向。

若要使用 CRectTracker,請建構 CRectTracker 物件,並指定初始化哪些顯示狀態。 然後,您可以使用這個介面,向使用者提供與 對象相關聯 CRectTracker 之 OLE 專案目前狀態的視覺回饋。

如需使用CRectTracker的詳細資訊,請參閱追蹤器一

繼承階層架構

CRectTracker

需求

標頭: afxext.h

CRectTracker::AdjustRect

使用重設大小控點調整追蹤矩形的大小時,由架構呼叫。

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

參數

nHandle
使用的句柄索引。

lpRect
矩形目前大小的指標。 (矩形的大小是由其高度和寬度來指定。

備註

此函式的預設行為可讓矩形的方向只在允許反向呼叫 和 TrackRubberBandTrack變更。

覆寫此函式,以控制拖曳作業期間追蹤矩形的調整。 其中一種方法是在傳回之前調整 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 影線圖樣涵蓋整個矩形。

備註

默認建構函式會使用 lpSrcRect 的值初始化 CRectTracker 物件,並將其他大小初始化為系統預設值。 如果沒有參數建立物件, m_rect 則和 m_nStyle 數據成員不會初始化。

CRectTracker::D raw

呼叫此函式以繪製矩形的外部線條和內部區域。

void Draw(CDC* pDC) const;

參數

pDC
要繪製之裝置內容的指標。

備註

追蹤器的樣式會決定繪圖的完成方式。 如需可用樣式的詳細資訊,請參閱 建構函 CRectTracker 式。

CRectTracker::D rawTrackerRect

每當追蹤器的位置在 或 TrackRubberBand 成員函式內Track變更時,由架構呼叫。

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 遮罩。

備註

重設大小控點會出現在矩形的側邊和角落,允許使用者控制矩形的形狀和大小。

矩形有 8 個重設大小控點,編號為 0-7。 每個重設大小句柄都會以遮罩中的位表示;該位的值是 2^ n,其中 n 是重設大小的句柄編號。 位 0-3 會對應到角落重設大小控點,從左上方順時針移動開始。 位 4-7 會對應到從上方順時針移動開始的側邊重設大小控點。 下圖顯示矩形的大小控點及其對應的重設大小句柄數字和值:

調整句柄數位的大小。

的預設實 GetHandleMask 作會傳回位的遮罩,讓重設大小句柄出現。 如果單一位開啟,將會繪製對應的重設大小控點。

覆寫此成員函式以隱藏或顯示指定的重設大小控點。

CRectTracker::GetTrueRect

呼叫此函式以擷取矩形的座標。

void GetTrueRect(LPRECT lpTrueRect) const;

參數

lpTrueRect
RECT將包含物件之裝置座標之CRectTracker結構的指標。

備註

矩形的維度包括位於外框線之任何重設大小控點的高度和寬度。 傳回時, 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::TrackRubberBand 是以允許的反轉方式呼叫時CRectTracker::Track,矩形有可能在 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。

備註

從視窗的 函式內部呼叫此函式,以處理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。 如果認可變更,只要移動滑鼠並放開滑鼠左鍵,就會在追蹤器的矩形中記錄新的位置和/或大小,並傳回非零。

備註

這通常從處理訊息的應用程式 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。

備註

通常會從處理WM_LBUTTONDOWN訊息的應用程式函式內部呼叫它(通常是 OnLButtonDown)。

此函式會擷取滑鼠,直到使用者放開滑鼠左鍵、按下 ESC 鍵或按下滑鼠右鍵為止。 當用戶移動滑鼠游標時,會呼叫 DrawTrackerRectOnChangedRect來更新意見反應。

追蹤是使用右下角控點的橡皮帶類型選取來執行。 如果允許反轉,可以藉由將矩形向上和向左或向下和向右拖曳來調整矩形的大小。

另請參閱

MFC 範例 TRACKER
MFC 範例 DRAWCLI
階層架構圖表
COleResizeBar 類別
CRect 類別