Megosztás a következőn keresztül:


CRectTracker osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Lehetővé teszi az elemek különböző módon történő megjelenítését, áthelyezését és átméretezését.

Szemantika

class CRectTracker

Tagok

Nyilvános konstruktorok

Név Description
CRectTracker::CRectTracker Egy CRectTracker objektumot hoz létre.

Nyilvános metódusok

Név Description
CRectTracker::AdjustRect A téglalap átméretezésekor hívható meg.
CRectTracker::D raw Megjeleníti a téglalapot.
CRectTracker::D rawTrackerRect Egy objektum szegélyének CRectTracker rajzolásakor hívjuk meg.
CRectTracker::GetHandleMask Egy elem átméretező fogópontjainak CRectTracker maszkjának lekérésére van meghívva.
CRectTracker::GetTrueRect A téglalap szélességét és magasságát adja vissza, beleértve az átméretező fogópontokat is.
CRectTracker::HitTest Az objektumhoz kapcsolódó kurzor aktuális pozícióját CRectTracker adja vissza.
CRectTracker::NormalizeHit A találatteszt-kód normalizálása.
CRectTracker::OnChangedRect A téglalap átméretezésekor vagy áthelyezésekor hívható meg.
CRectTracker::SetCursor Beállítja a kurzort a téglalap feletti pozíciójától függően.
CRectTracker::Track Lehetővé teszi, hogy a felhasználó manipulálja a téglalapot.
CRectTracker::TrackRubberBand Lehetővé teszi, hogy a felhasználó "gumi-sáv" a kijelölést.

Nyilvános adatok tagjai

Név Description
CRectTracker::m_nHandleSize Meghatározza az átméretező fogópontok méretét.
CRectTracker::m_nStyle A nyomkövető aktuális stílusa(i).
CRectTracker::m_rect A téglalap aktuális pozíciója (képpontban).
CRectTracker::m_sizeMin Meghatározza a téglalap minimális szélességét és magasságát.

Megjegyzések

CRectTracker nem rendelkezik alaposztálysal.

Bár az CRectTracker osztály úgy lett kialakítva, hogy lehetővé tegye a felhasználó számára az OLE-elemek grafikus felülettel való használatát, a használata nem korlátozódik az OLE-kompatibilis alkalmazásokra. Bárhol használható, ahol ilyen felhasználói felület szükséges.

CRectTracker a szegélyek lehetnek folytonos vagy pontozott vonalak. Az elem megadhat egy kikelt szegélyt vagy átfedést egy kikelt mintával az elem különböző állapotainak jelzéséhez. Nyolc átméretező fogópontot helyezhet el az elem külső vagy belső szegélyén. (Az átméretező fogópontok magyarázatát lásd: GetHandleMask.) Végül az CRectTracker átméretezés során módosíthatja egy elem tájolását.

A használathoz CRectTrackerhozzon létre egy objektumot CRectTracker , és adja meg, hogy mely megjelenítési állapotok legyenek inicializálva. Ezt az interfészt használva visszajelzést küldhet a felhasználónak az objektumhoz CRectTracker társított OLE elem aktuális állapotáról.

A használatról CRectTrackertovábbi információt a Követők című cikkben talál.

Öröklési hierarchia

CRectTracker

Requirements

Fejléc: afxext.h

CRectTracker::AdjustRect

A keretrendszer meghívja, amikor a nyomkövetési téglalap átméretezése egy átméretezési fogóponttal történik.

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

Paraméterek

nHandle
A használt leíró indexe.

lpRect
Mutasson a téglalap aktuális méretére. (A téglalap méretét a magassága és szélessége határozza meg.)

Megjegyzések

A függvény alapértelmezett viselkedése lehetővé teszi, hogy a téglalap tájolása csak akkor változzon, ha TrackTrackRubberBand az invertálás engedélyezett.

Felülbírálja ezt a függvényt a nyomkövetési téglalap beállításának szabályozásához egy húzási művelet során. Az egyik módszer az lpRect által megadott koordináták módosítása a visszatérés előtt.

A függvény felülbírálásával olyan speciális funkciók valósíthatók meg, amelyeket nem támogat CRectTrackerközvetlenül a rendszer , például a rácshoz illesztés vagy a méretarány megtartása.

CRectTracker::CRectTracker

Objektumot hoz létre és inicializál CRectTracker .

CRectTracker();

CRectTracker(
    LPCRECT lpSrcRect,
    UINT nStyle);

Paraméterek

lpSrcRect
A téglalap objektum koordinátái.

nStyle
Az objektum stílusát CRectTracker adja meg. A következő stílusok támogatottak:

  • CRectTracker::solidLine Használjon egy folytonos vonalat a téglalapszegélyhez.

  • CRectTracker::dottedLine Használjon pontozott vonalat a téglalap szegélyéhez.

  • CRectTracker::hatchedBorder Használjon kikelt mintát a téglalapszegélyhez.

  • CRectTracker::resizeInside Méretezze át a téglalapon belül található fogópontokat.

  • CRectTracker::resizeOutside Méretezze át a téglalapon kívül található fogópontokat.

  • CRectTracker::hatchInside A kikelt minta a teljes téglalapot lefedi.

Megjegyzések

Az alapértelmezett konstruktor inicializálja az objektumot az CRectTrackerlpSrcRect értékeivel, és inicializálja az egyéb méreteket a rendszer alapértelmezései között. Ha az objektum paraméterek nélkül jön létre, az és az m_rectm_nStyle adattagok nem lesznek inicializálva.

CRectTracker::D raw

Hívja meg ezt a függvényt a téglalap külső vonalainak és belső régiójának rajzolásához.

void Draw(CDC* pDC) const;

Paraméterek

Pdc
Mutasson arra az eszközkörnyezetre, amelyen rajzolni szeretne.

Megjegyzések

A korrektúra stílusa határozza meg a rajz elkészítésének módját. Az elérhető stílusokról további információt a konstruktorban CRectTracker talál.

CRectTracker::D rawTrackerRect

A keretrendszer meghívja, amikor a nyomkövető pozíciója megváltozott a Track tagfüggvényen TrackRubberBand belül.

virtual void DrawTrackerRect(
    LPCRECT lpRect,
    CWnd* pWndClipTo,
    CDC* pDC,
    CWnd* pWnd);

Paraméterek

lpRect
Mutasson a RECT rajzolni kívánt téglalapot tartalmazó téglalapra.

pWndClipTo
Mutasson a téglalap kivágásához használni kívánt ablakra.

Pdc
Mutasson arra az eszközkörnyezetre, amelyen rajzolni szeretne.

pWnd
Mutasson arra az ablakra, amelyen a rajz létrejön.

Megjegyzések

Az alapértelmezett implementáció meghív egy pontozott téglalapot rajzoló hívást CDC::DrawFocusRect.

Felülbírálja ezt a függvényt, hogy eltérő visszajelzést adjon a nyomkövetési művelet során.

CRectTracker::GetHandleMask

A keretrendszer meghívja ezt a tagfüggvényt, hogy lekérje a téglalap átméretező fogópontjaihoz tartozó maszkot.

virtual UINT GetHandleMask() const;

Visszaadott érték

Az elem átméretező CRectTracker fogópontjainak maszkja.

Megjegyzések

Az átméretező fogópontok megjelennek a téglalap oldalain és sarkaiban, és lehetővé teszik a felhasználó számára a téglalap alakjának és méretének szabályozását.

A téglalap 8 átméretező fogópontból áll, 0-7 számmal. Minden átméretező fogópontot a maszk egy része jelöl; a bit értéke 2^ n, ahol n az átméretező fogópont száma. A 0–3. bit a sarok átméretező fogópontjainak felel meg, a bal felső saroktól kezdve az óramutató járásával megegyező irányban. A 4–7. bit az oldalméretező fogópontoknak felel meg az óramutató járásával megegyező irányban a felső saroktól kezdve. Az alábbi ábrán egy téglalap átméretező fogópontjai és a hozzájuk tartozó átméretező fogópontok számai és értékei láthatók:

Fogópontok számának átméretezése.

Az alapértelmezett implementáció GetHandleMask visszaadja a bitek maszkját, hogy megjelenjenek az átméretező fogópontok. Ha az egyetlen bit be van kapcsolva, a megfelelő átméretező fogópont lesz rajzolva.

Felülbírálja ezt a tagfüggvényt a megjelölt átméretező fogópontok elrejtéséhez vagy megjelenítéséhez.

CRectTracker::GetTrueRect

Hívja meg ezt a függvényt a téglalap koordinátáinak lekéréséhez.

void GetTrueRect(LPRECT lpTrueRect) const;

Paraméterek

lpTrueRect
Mutasson az RECT objektum eszközkoordinátáit tartalmazó struktúrára CRectTracker .

Megjegyzések

A téglalap méretei tartalmazzák a külső szegélyen található átméretező fogópontok magasságát és szélességét. Visszatéréskor az lpTrueRect mindig normalizált téglalap az eszköz koordinátáiban.

CRectTracker::HitTest

Hívja ezt a függvényt annak megállapításához, hogy a felhasználó megragadta-e az átméretező fogópontot.

int HitTest(CPoint point) const;

Paraméterek

Pont
Az eszközkoordinátákban a tesztelés célja.

Visszaadott érték

A visszaadott érték az enumerált típuson CRectTracker::TrackerHit alapul, és az alábbi értékek egyikével rendelkezhet:

  • 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

Az átméretező fogópontok mérete képpontban CRectTracker .

int m_nHandleSize;

Megjegyzések

Inicializálva az alapértelmezett rendszerértékkel.

CRectTracker::m_rect

A téglalap aktuális pozíciója az ügyfélkoordinátákban (képpontokban).

CRect m_rect;

CRectTracker::m_sizeMin

A téglalap minimális mérete.

CSize m_sizeMin;

Megjegyzések

A rendszer az alapértelmezett értékeket cx és cya szegélyszélesség alapértelmezett rendszerértékét is kiszámítja. Ezt az adattagot csak a AdjustRect tagfüggvény használja.

CRectTracker::m_nStyle

A téglalap aktuális stílusa.

UINT m_nStyle;

Megjegyzések

A lehetséges stílusok listáját lásd : CRectTracker::CRectTracker .

CRectTracker::NormalizeHit

Hívja meg ezt a függvényt egy potenciálisan fordított leíró konvertálásához.

int NormalizeHit(int nHandle) const;

Paraméterek

nHandle
A felhasználó által kijelölt kezelő.

Visszaadott érték

A normalizált leíró indexe.

Megjegyzések

CRectTracker::TrackRubberBand Ha CRectTracker::Track a meghívás engedélyezett invertálással történik, lehetséges, hogy a téglalap az x tengelyen, az y tengelyen vagy mindkettőn invertálásra kerül. Ha ez történik, olyan fogópontokat ad vissza, HitTest amelyek szintén a téglalaphoz képest invertáltak. Ez nem megfelelő a kurzor visszajelzésének rajzolásához, mert a visszajelzés a téglalap képernyőpozíciójától függ, nem pedig a módosítani kívánt téglalap adatszerkezetétől.

CRectTracker::OnChangedRect

A keretrendszer hívja meg, amikor a tracker téglalapja módosult a hívás Tracksorán.

virtual void OnChangedRect(const CRect& rectOld);

Paraméterek

rectOld
Az objektum régi eszközkoordinátáit CRectTracker tartalmazza.

Megjegyzések

A függvény meghívásakor az összes visszajelzés DrawTrackerRect el lett távolítva. A függvény alapértelmezett implementációja nem végez semmit.

Felülbírálja ezt a függvényt, ha a téglalap átméretezése után bármilyen műveletet végre szeretne hajtani.

CRectTracker::SetCursor

A függvény meghívásával módosíthatja a kurzor alakzatát, miközben az az CRectTracker objektum régióján van.

BOOL SetCursor(
    CWnd* pWnd,
    UINT nHitTest) const;

Paraméterek

pWnd
A kurzort jelenleg tartalmazó ablakra mutat.

nHitTest
Az előző találati teszt eredményei a WM_SETCURSOR üzenetből.

Visszaadott érték

Nonzero, ha az előző találat a nyomkövető téglalapja felett volt; egyéb esetben 0.

Megjegyzések

Hívja meg ezt a függvényt az ablak azon függvényén belülről, amely a WM_SETCURSOR üzenetet kezeli (általában OnSetCursor).

CRectTracker::Track

Hívja meg ezt a függvényt a téglalap átméretezéséhez szükséges felhasználói felület megjelenítéséhez.

BOOL Track(
    CWnd* pWnd,
    CPoint point,
    BOOL bAllowInvert = FALSE,
    CWnd* pWndClipTo = NULL);

Paraméterek

pWnd
A téglalapot tartalmazó ablakobjektum.

Pont
Az aktuális egérpozíció eszközkoordinátái az ügyfélterülethez viszonyítva.

bAllowInvert
Ha IGAZ, a téglalap az x tengely vagy az y tengely mentén fordítható; egyéb esetben HAMIS.

pWndClipTo
Az ablak, amellyel a rajzműveleteket kivágja a program. Null érték esetén a pWnd lesz a vágó téglalap.

Visszaadott érték

Ha az ESC-kulcsot lenyomja, a nyomkövetési folyamat leáll, a nyomkövetőben tárolt téglalap nem változik, és a rendszer 0 értéket ad vissza. Ha a módosítás véglegesítése folyamatban van, az egér mozgatásával és a bal egérgomb felengedésével a rendszer rögzíti az új pozíciót és/vagy méretet a nyomkövető téglalapjában, és a nonzero vissza lesz adva.

Megjegyzések

Ezt általában az üzenetet kezelő WM_LBUTTONDOWN alkalmazás függvényéből hívjuk meg (általában OnLButtonDown).

Ez a függvény rögzíti az egeret, amíg a felhasználó fel nem oldja a bal egérgombot, lenyomja az ESC billentyűt, vagy lenyomja a jobb egérgombot. Ahogy a felhasználó mozgatja az egérmutatót, a visszajelzés a hívással DrawTrackerRect és OnChangedRecta .

Ha a bAllowInvert értéke IGAZ, a követési téglalap az x tengelyen vagy az y tengelyen is megfordítható.

CRectTracker::TrackRubberBand

A függvény meghívása gumisáv kiválasztásához.

BOOL TrackRubberBand(
    CWnd* pWnd,
    CPoint point,
    BOOL bAllowInvert = TRUE);

Paraméterek

pWnd
A téglalapot tartalmazó ablakobjektum.

Pont
Az aktuális egérpozíció eszközkoordinátái az ügyfélterülethez viszonyítva.

bAllowInvert
Ha IGAZ, a téglalap az x tengely vagy az y tengely mentén fordítható; egyéb esetben HAMIS.

Visszaadott érték

Nonzero, ha az egér elmozdult, és a téglalap nem üres; egyéb esetben 0.

Megjegyzések

Általában az alkalmazás függvényén belülről hívjuk meg, amely kezeli a WM_LBUTTONDOWN üzenetet (általában OnLButtonDown).

Ez a függvény rögzíti az egeret, amíg a felhasználó fel nem oldja a bal egérgombot, lenyomja az ESC billentyűt, vagy lenyomja a jobb egérgombot. Ahogy a felhasználó mozgatja az egérmutatót, a visszajelzés a hívással DrawTrackerRect és OnChangedRecta .

A nyomon követés a jobb alsó fogópontból származó gumiszalag típusú kijelöléssel történik. Ha az invertálás engedélyezett, a téglalap mérete felfelé és balra vagy lefelé, illetve jobbra húzással méretezhető.

Lásd még

MFC mintakövető
MFC-minta DRAWCLI
hierarchiadiagram
COleResizeBar osztály
CRect osztály