共用方式為


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 會對應到從上方順時針移動開始的側邊調整大小控點。 下圖顯示矩形的大小控點及其對應的調整大小控制碼數位和值:

Resize handle numbers.

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

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

CRectTracker::GetTrueRect

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

void GetTrueRect(LPRECT lpTrueRect) const;

參數

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

備註

矩形的維度包括位於外框線之任何調整大小控點的高度和寬度。 傳回時, lpTrueRect 一律是裝置座標中的正規化矩形。

CRectTracker::HitTest

呼叫此函式,以找出使用者是否已擷取調整大小控點。

int HitTest(CPoint point) const;

參數


要測試之裝置座標中的點。

傳回值

傳回的值是以列舉型 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
包含矩形的視窗物件。


目前滑鼠位置相對於工作區的裝置座標。

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
包含矩形的視窗物件。


目前滑鼠位置相對於工作區的裝置座標。

bAllowInvert
如果為 TRUE,則矩形可以沿著 X 軸或 Y 軸反轉;否則為 FALSE。

傳回值

如果滑鼠已移動且矩形不是空的,則為非零;否則為 0。

備註

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

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

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

另請參閱

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