CRectTracker – třída
Umožňuje zobrazení, přesunutí a změnu velikosti položky různými způsoby.
Syntaxe
class CRectTracker
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CRectTracker::CRectTracker | CRectTracker Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CRectTracker::AdjustRect | Volá se při změně velikosti obdélníku. |
CRectTracker::D raw | Vykreslí obdélník. |
CRectTracker::D rawTrackerRect | Volá se při kreslení ohraničení objektu CRectTracker . |
CRectTracker::GetHandleMask | Volá se k získání masky CRectTracker úchytů pro změnu velikosti položky. |
CRectTracker::GetTrueRect | Vrátí šířku a výšku obdélníku včetně úchytů pro změnu velikosti. |
CRectTracker::HitTest | Vrátí aktuální pozici kurzoru souvisejícího s objektem CRectTracker . |
CRectTracker::NormalizeHit | Normalizuje kód hit-test. |
CRectTracker::OnChangedRect | Volá se, když byl obdélník změněn nebo přesunut. |
CRectTracker::SetCursor | Nastaví kurzor v závislosti na jeho umístění nad obdélníkem. |
CRectTracker::Track | Umožňuje uživateli manipulovat s obdélníkem. |
CRectTracker::TrackRubberBand | Umožňuje uživateli výběr "gumový pás". |
Veřejné datové členy
Název | Popis |
---|---|
CRectTracker::m_nHandleSize | Určuje velikost úchytů pro změnu velikosti. |
CRectTracker::m_nStyle | Aktuální styly sledování. |
CRectTracker::m_rect | Aktuální pozice (v pixelech) obdélníku |
CRectTracker::m_sizeMin | Určuje minimální šířku a výšku obdélníku. |
Poznámky
CRectTracker
nemá základní třídu.
CRectTracker
I když je třída navržena tak, aby uživateli umožňovala interakci s položkami OLE pomocí grafického rozhraní, jeho použití není omezeno na aplikace s podporou OLE. Dá se použít kdekoli, kde je takové uživatelské rozhraní povinné.
CRectTracker
ohraničení může být plná nebo tečkovaná čára. Položka může být označena šrafovaným ohraničením nebo překryvným vzorem, který označuje různé stavy položky. Na vnější nebo vnitřní okraj položky můžete umístit osm úchytů pro změnu velikosti. (Vysvětlení popisovačů změny velikosti najdete v tématu GetHandleMask.) CRectTracker
Nakonec vám umožní změnit orientaci položky během změny velikosti.
Chcete-li použít CRectTracker
, vytvořte CRectTracker
objekt a určete, které stavy zobrazení jsou inicializovány. Pomocí tohoto rozhraní pak můžete poskytnout vizuální zpětnou vazbu uživatele k aktuálnímu stavu položky OLE přidružené k objektu CRectTracker
.
Další informace o použití CRectTracker
naleznete v článku Sledování.
Hierarchie dědičnosti
CRectTracker
Požadavky
Hlavička: afxext.h
CRectTracker::AdjustRect
Volá se rozhraním při změně velikosti obdélníku sledování pomocí úchytu pro změnu velikosti.
virtual void AdjustRect(
int nHandle,
LPRECT lpRect);
Parametry
nHandle
Index použitého popisovače
lpRect
Ukazatel na aktuální velikost obdélníku. (Velikost obdélníku je daná výškou a šířkou.)
Poznámky
Výchozí chování této funkce umožňuje změnit orientaci obdélníku pouze v případě, že Track
je TrackRubberBand
volána s povoleným invertováním.
Tuto funkci přepište, aby se při přetahování řídilo nastavení obdélníku sledování. Jednou metodou je úprava souřadnic určených lpRect před vrácením.
Pomocí přepsání této funkce je možné implementovat speciální funkce, které nejsou přímo podporovány CRectTracker
, například funkce přichycení k mřížce nebo zachování poměru stran.
CRectTracker::CRectTracker
Vytvoří a inicializuje CRectTracker
objekt.
CRectTracker();
CRectTracker(
LPCRECT lpSrcRect,
UINT nStyle);
Parametry
lpSrcRect
Souřadnice obdélníkového objektu.
nStyle
Určuje styl objektu CRectTracker
. Podporují se následující styly:
CRectTracker::solidLine
Pro ohraničení obdélníku použijte plnou čáru.CRectTracker::dottedLine
Pro ohraničení obdélníku použijte tečkovanou čáru.CRectTracker::hatchedBorder
Pro ohraničení obdélníku použijte šrafovaný vzor.CRectTracker::resizeInside
Změňte velikost úchytů umístěných uvnitř obdélníku.CRectTracker::resizeOutside
Změňte velikost úchytů umístěných mimo obdélník.CRectTracker::hatchInside
Šrafovaný vzor pokrývá celý obdélník.
Poznámky
Výchozí konstruktor inicializuje CRectTracker
objekt s hodnotami z lpSrcRect a inicializuje jiné velikosti na výchozí hodnoty systému. Pokud je objekt vytvořen bez parametrů, m_rect
datové členy nejsou m_nStyle
inicializovány.
CRectTracker::D raw
Voláním této funkce nakreslete vnější čáry obdélníku a vnitřní oblast.
void Draw(CDC* pDC) const;
Parametry
pDC
Ukazatel na kontext zařízení, na kterém chcete kreslit.
Poznámky
Styl sledování určuje, jak se výkres provádí. Další informace o dostupných stylech najdete v konstruktoru CRectTracker
.
CRectTracker::D rawTrackerRect
Volá se rozhraním pokaždé, když se pozice sledování změnila v rámci funkce nebo TrackRubberBand
členaTrack
.
virtual void DrawTrackerRect(
LPCRECT lpRect,
CWnd* pWndClipTo,
CDC* pDC,
CWnd* pWnd);
Parametry
lpRect
Ukazatel myši na RECT
obdélník, který chcete nakreslit.
pWndClipTo
Ukazatel na okno, které se má použít při oříznutí obdélníku.
pDC
Ukazatel na kontext zařízení, na kterém chcete kreslit.
pWnd
Ukazatel myši na okno, na kterém se výkres objeví.
Poznámky
Výchozí implementace provádí volání CDC::DrawFocusRect
, který nakreslí tečkovaný obdélník.
Tuto funkci přepište, aby během operace sledování poskytovala jinou zpětnou vazbu.
CRectTracker::GetHandleMask
Architektura volá tuto členskou funkci, která načte masku úchytů pro změnu velikosti obdélníku.
virtual UINT GetHandleMask() const;
Návratová hodnota
Maska CRectTracker
úchytů pro změnu velikosti položky
Poznámky
Úchyty pro změnu velikosti se zobrazí na stranách a rozích obdélníku a umožní uživateli ovládat tvar a velikost obdélníku.
Obdélník má 8 úchytů pro změnu velikosti číslovaný 0–7. Každý úchyt pro změnu velikosti je reprezentován bitem v masce; hodnota tohoto bitu je 2^ n, kde n je číslo úchytu pro změnu velikosti. Bity 0–3 odpovídají rohovým úchytům pro změnu velikosti, počínaje levým horním pohybem po směru hodinových ručiček. Bity 4-7 odpovídají bočním úchytům pro změnu velikosti počínaje horním pohybujícím se po směru hodinových ručiček. Následující obrázek znázorňuje úchyty pro změnu velikosti obdélníku a jejich odpovídající čísla a hodnoty úchytu pro změnu velikosti:
Výchozí implementace GetHandleMask
vrátí masku bitů, aby se zobrazily úchyty pro změnu velikosti. Pokud je jeden bit zapnutý, nakreslí se odpovídající úchyt pro změnu velikosti.
Přepište tuto členovu funkci tak, aby se skryla nebo zobrazila označená úchyty pro změnu velikosti.
CRectTracker::GetTrueRect
Voláním této funkce načtěte souřadnice obdélníku.
void GetTrueRect(LPRECT lpTrueRect) const;
Parametry
lpTrueRect
Ukazatel na RECT
strukturu, která bude obsahovat souřadnice zařízení objektu CRectTracker
.
Poznámky
Rozměry obdélníku zahrnují výšku a šířku všech úchytů pro změnu velikosti umístěných na vnějším ohraničení. Po vrácení je lpTrueRect vždy normalizovaný obdélník v souřadnicích zařízení.
CRectTracker::HitTest
Voláním této funkce zjistíte, jestli uživatel chytil úchyt pro změnu velikosti.
int HitTest(CPoint point) const;
Parametry
bod
Bod v souřadnicích zařízení k otestování.
Návratová hodnota
Vrácená hodnota je založena na výčtovém typu CRectTracker::TrackerHit
a může mít jednu z následujících hodnot:
CRectTracker::hitNothing
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::hitMiddle
8
CRectTracker::m_nHandleSize
Velikost úchytů pro změnu velikosti v pixelech CRectTracker
.
int m_nHandleSize;
Poznámky
Inicializováno s výchozí systémovou hodnotou.
CRectTracker::m_rect
Aktuální pozice obdélníku v souřadnicích klienta (pixely).
CRect m_rect;
CRectTracker::m_sizeMin
Minimální velikost obdélníku.
CSize m_sizeMin;
Poznámky
Výchozí hodnoty cx
i cy
hodnoty se počítají z výchozí systémové hodnoty pro šířku ohraničení. Tento datový člen používá pouze AdjustRect
členová funkce.
CRectTracker::m_nStyle
Aktuální styl obdélníku
UINT m_nStyle;
Poznámky
Seznam možných stylů najdete v tématu CRectTracker::CRectTracker .
CRectTracker::NormalizeHit
Voláním této funkce převedete potenciálně invertovaný popisovač.
int NormalizeHit(int nHandle) const;
Parametry
nHandle
Zpracování vybrané uživatelem
Návratová hodnota
Index normalizovaného popisovače.
Poznámky
Je-li CRectTracker::Track
volána nebo CRectTracker::TrackRubberBand
volána s povoleným invertováním, je možné, aby byl obdélník invertován na ose x, ose y nebo obojí. V takovém případě vrátí popisovače, HitTest
které jsou také invertovány s ohledem na obdélník. To není vhodné pro zpětnou vazbu kurzoru výkresu, protože zpětná vazba závisí na umístění obrazovky obdélníku, nikoli části datové struktury obdélníku, která bude změněna.
CRectTracker::OnChangedRect
Volá se rozhraním pokaždé, když se obdélník sledování změnil během volání Track
.
virtual void OnChangedRect(const CRect& rectOld);
Parametry
rectOld
Obsahuje staré souřadnice zařízení objektu CRectTracker
.
Poznámky
V době, kdy je tato funkce volána, byla odebrána veškerá zpětná vazba nakreslená pomocí DrawTrackerRect
. Výchozí implementace této funkce nic nedělá.
Tuto funkci přepište, když chcete provést jakékoli akce po změně velikosti obdélníku.
CRectTracker::SetCursor
Voláním této funkce změníte obrazec kurzoru, když je přes oblast objektu CRectTracker
.
BOOL SetCursor(
CWnd* pWnd,
UINT nHitTest) const;
Parametry
pWnd
Odkazuje na okno, které aktuálně obsahuje kurzor.
nHitTest
Výsledky předchozího testu hitů z WM_SETCURSOR zprávy
Návratová hodnota
Nenulové, pokud předchozí hit byl přes obdélník trackeru; jinak 0.
Poznámky
Volejte tuto funkci z funkce okna, která zpracovává zprávu WM_SETCURSOR (obvykle OnSetCursor
).
CRectTracker::Track
Voláním této funkce zobrazíte uživatelské rozhraní pro změnu velikosti obdélníku.
BOOL Track(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = FALSE,
CWnd* pWndClipTo = NULL);
Parametry
pWnd
Objekt okna, který obsahuje obdélník.
bod
Souřadnice zařízení aktuální polohy myši vzhledem k klientské oblasti.
bAllowInvert
Je-li pravda, obdélník lze invertovat podél osy x nebo osy y; jinak NEPRAVDA.
pWndClipTo
Okno, na které budou operace kreslení oříznuty. Pokud null, pWnd se použije jako obdélník výřezu.
Návratová hodnota
Pokud je stisknutá klávesa ESC, proces sledování se zastaví, obdélník uložený v trackeru se nezmění a vrátí se 0. Pokud je změna potvrzena, přesunutím myši a uvolněním levého tlačítka myši se nová pozice a/nebo velikost zaznamená do obdélníku trackeru a vrátí se nenulová hodnota.
Poznámky
To se obvykle volá z funkce vaší aplikace, která zpracovává WM_LBUTTONDOWN
zprávu (obvykle OnLButtonDown
).
Tato funkce zachytí myš, dokud uživatel nespustí levé tlačítko myši, stiskne klávesu ESC nebo stiskne pravé tlačítko myši. Když uživatel přesune kurzor myši, zpětná vazba se aktualizuje voláním DrawTrackerRect
a OnChangedRect
.
Pokud bAllowInvert je PRAVDA, může být obdélník sledování invertován buď na ose x, nebo na ose y.
CRectTracker::TrackRubberBand
Voláním této funkce provedete výběr gumových pásem.
BOOL TrackRubberBand(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = TRUE);
Parametry
pWnd
Objekt okna, který obsahuje obdélník.
bod
Souřadnice zařízení aktuální polohy myši vzhledem k klientské oblasti.
bAllowInvert
Je-li pravda, obdélník lze invertovat podél osy x nebo osy y; jinak NEPRAVDA.
Návratová hodnota
Nenulové, pokud se myš přesunula a obdélník není prázdný; jinak 0.
Poznámky
Obvykle se volá z funkce vaší aplikace, která zpracovává zprávu WM_LBUTTONDOWN (obvykle OnLButtonDown
).
Tato funkce zachytí myš, dokud uživatel nespustí levé tlačítko myši, stiskne klávesu ESC nebo stiskne pravé tlačítko myši. Když uživatel přesune kurzor myši, zpětná vazba se aktualizuje voláním DrawTrackerRect
a OnChangedRect
.
Sledování se provádí s výběrem gumového pásu z pravého dolního úchytu. Pokud je převrácení povolené, může mít obdélník velikost přetažením nahoru a doleva nebo dolů a doprava.
Viz také
MFC Sample TRACKER
MFC – ukázka DRAWCLI
Graf hierarchie
COleResizeBar – třída
CRect – třída