Sdílet prostřednictvím


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í CRectTrackernaleznete 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:

Změna velikosti čísel popisovačů

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 -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

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 cyhodnoty 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