Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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::solidLineHasználjon egy folytonos vonalat a téglalapszegélyhez.CRectTracker::dottedLineHasználjon pontozott vonalat a téglalap szegélyéhez.CRectTracker::hatchedBorderHasználjon kikelt mintát a téglalapszegélyhez.CRectTracker::resizeInsideMéretezze át a téglalapon belül található fogópontokat.CRectTracker::resizeOutsideMéretezze át a téglalapon kívül található fogópontokat.CRectTracker::hatchInsideA 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:
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-1CRectTracker::hitTopLeft0CRectTracker::hitTopRight1CRectTracker::hitBottomRight2CRectTracker::hitBottomLeft3CRectTracker::hitTop4CRectTracker::hitRight5CRectTracker::hitBottom6CRectTracker::hitLeft7CRectTracker::hitMiddle8
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