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
矩形目前大小的指標。 (矩形的大小是由其高度和寬度來指定。
備註
此函式的預設行為可讓矩形的方向只在允許反向呼叫 和 TrackRubberBand
時Track
變更。
覆寫此函式,以控制拖曳作業期間追蹤矩形的調整。 其中一種方法是在傳回之前調整 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
-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::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 鍵或按下滑鼠右鍵為止。 當用戶移動滑鼠游標時,會呼叫 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。
備註
通常會從處理WM_LBUTTONDOWN訊息的應用程式函式內部呼叫它(通常是 OnLButtonDown
)。
此函式會擷取滑鼠,直到使用者放開滑鼠左鍵、按下 ESC 鍵或按下滑鼠右鍵為止。 當用戶移動滑鼠游標時,會呼叫 DrawTrackerRect
和 OnChangedRect
來更新意見反應。
追蹤是使用右下角控點的橡皮帶類型選取來執行。 如果允許反轉,可以藉由將矩形向上和向左或向下和向右拖曳來調整矩形的大小。
另請參閱
MFC 範例 TRACKER
MFC 範例 DRAWCLI
階層架構圖表
COleResizeBar 類別
CRect 類別