Share via


CRectTracker-klasse

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Hiermee kunt u een item op verschillende manieren weergeven, verplaatsen en het formaat ervan wijzigen.

Syntaxis

class CRectTracker

Leden

Openbare constructors

Naam Description
CRectTracker::CRectTracker Maakt een CRectTracker object.

Openbare methoden

Naam Description
CRectTracker::AdjustRect Aangeroepen wanneer het formaat van de rechthoek wordt gewijzigd.
CRectTracker::D raw Geeft de rechthoek weer.
CRectTracker::D rawTrackerRect Aangeroepen bij het tekenen van de rand van een CRectTracker object.
CRectTracker::GetHandleMask Wordt aangeroepen om het masker van de formaatgrepen van een CRectTracker item op te halen.
CRectTracker::GetTrueRect Retourneert de breedte en hoogte van rechthoeken, inclusief formaatgrepen.
CRectTracker::HitTest Retourneert de huidige positie van de cursor die is gerelateerd aan het CRectTracker object.
CRectTracker::NormalizeHit Normaliseert een hit-testcode.
CRectTracker::OnChangedRect Aangeroepen wanneer de rechthoek is gewijzigd of verplaatst.
CRectTracker::SetCursor Hiermee stelt u de cursor in, afhankelijk van de positie van de rechthoek.
CRectTracker::Track Hiermee kan de gebruiker de rechthoek bewerken.
CRectTracker::TrackRubberBand Hiermee kan de gebruiker de selectie 'rubber-band' maken.

Leden van openbare gegevens

Naam Description
CRectTracker::m_nHandleSize Bepaalt de grootte van formaatgrepen.
CRectTracker::m_nStyle Huidige stijl(en) van de tracker.
CRectTracker::m_rect Huidige positie (in pixels) van de rechthoek.
CRectTracker::m_sizeMin Bepaalt de minimale breedte en hoogte van de rechthoek.

Opmerkingen

CRectTracker heeft geen basisklasse.

Hoewel de CRectTracker klasse is ontworpen om de gebruiker te laten communiceren met OLE-items met behulp van een grafische interface, is het gebruik ervan niet beperkt tot toepassingen met OLE-functionaliteit. Het kan overal worden gebruikt waar een dergelijke gebruikersinterface is vereist.

CRectTracker randen kunnen ononderbroken of stippellijnen zijn. Het item kan een uitgebroede rand krijgen of overlappen met een uitgebroed patroon om verschillende statussen van het item aan te geven. U kunt acht formaatgrepen aan de buitenkant of de binnenrand van het item plaatsen. (Zie GetHandleMask voor een uitleg van de formaatgrepen.) Ten slotte CRectTracker kunt u de afdrukstand van een item wijzigen tijdens het wijzigen van het formaat.

Als u wilt gebruiken CRectTracker, maakt u een CRectTracker object en geeft u op welke weergavestatussen worden geïnitialiseerd. Vervolgens kunt u deze interface gebruiken om de gebruikersvisual feedback te geven over de huidige status van het OLE-item dat aan het CRectTracker object is gekoppeld.

Zie het artikel Trackers voor meer informatie over het gebruikCRectTracker.

Overnamehiërarchie

CRectTracker

Requirements

Koptekst: afxext.h

CRectTracker::AdjustRect

Aangeroepen door het framework wanneer de rechthoek voor het bijhouden van het formaat wordt gewijzigd met behulp van een formaatgreep.

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

Parameterwaarden

nHandle
Index van gebruikte ingang.

lpRect
Aanwijzer naar de huidige grootte van de rechthoek. (De grootte van een rechthoek wordt bepaald door de hoogte en breedte.)

Opmerkingen

Met het standaardgedrag van deze functie kan de afdrukstand van de rechthoek alleen worden gewijzigd wanneer Track en TrackRubberBand worden aangeroepen met omkering toegestaan.

Overschrijf deze functie om de aanpassing van de rechthoek voor het bijhouden te beheren tijdens een sleepbewerking. Een methode is het aanpassen van de coördinaten die zijn opgegeven door lpRect voordat u terugkeert.

Speciale functies die niet rechtstreeks worden ondersteund door CRectTracker, zoals snap-to-grid of keep-aspect-ratio, kunnen worden geïmplementeerd door deze functie te overschrijven.

CRectTracker::CRectTracker

Hiermee maakt en initialiseert u een CRectTracker object.

CRectTracker();

CRectTracker(
    LPCRECT lpSrcRect,
    UINT nStyle);

Parameterwaarden

lpSrcRect
De coördinaten van het rechthoekobject.

nStyle
Hiermee geeft u de stijl van het CRectTracker object. De volgende stijlen worden ondersteund:

  • CRectTracker::solidLine Gebruik een ononderbroken lijn voor de rechthoekrand.

  • CRectTracker::dottedLine Gebruik een stippellijn voor de rechthoekrand.

  • CRectTracker::hatchedBorder Gebruik een uitgebroed patroon voor de rechthoekrand.

  • CRectTracker::resizeInside Formaatgrepen in de rechthoek wijzigen.

  • CRectTracker::resizeOutside Formaatgrepen buiten de rechthoek wijzigen.

  • CRectTracker::hatchInside Het uitgebroed patroon bedekt de hele rechthoek.

Opmerkingen

De standaardconstructor initialiseert het CRectTracker object met de waarden van lpSrcRect en initialiseert andere grootten naar systeemstandaarden. Als het object zonder parameters wordt gemaakt, worden de m_rect en m_nStyle gegevensleden niet geïnitialiseerd.

CRectTracker::D raw

Roep deze functie aan om de buitenste lijnen en het binnenste gebied van de rechthoek te tekenen.

void Draw(CDC* pDC) const;

Parameterwaarden

Pdc
Aanwijzer naar de apparaatcontext waarop u wilt tekenen.

Opmerkingen

De stijl van de tracker bepaalt hoe de tekening wordt uitgevoerd. Zie de constructor voor CRectTracker meer informatie over de beschikbare stijlen.

CRectTracker::D rawTrackerRect

Aangeroepen door het framework wanneer de positie van de tracker is gewijzigd in de Track functie of TrackRubberBand lid.

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

Parameterwaarden

lpRect
Aanwijzer naar de RECT rechthoek die u wilt tekenen.

pWndClipTo
Aanwijzer naar het venster dat moet worden gebruikt bij het knippen van de rechthoek.

Pdc
Aanwijzer naar de apparaatcontext waarop u wilt tekenen.

pWnd
Aanwijzer naar het venster waarop de tekening plaatsvindt.

Opmerkingen

Met de standaard implementatie wordt een aanroep uitgevoerd naar CDC::DrawFocusRect, waarmee een gestippelde rechthoek wordt gemaakt.

Overschrijf deze functie om verschillende feedback te geven tijdens de traceringsbewerking.

CRectTracker::GetHandleMask

In het framework wordt deze lidfunctie aangeroepen om het masker op te halen voor de formaatgrepen van een rechthoek.

virtual UINT GetHandleMask() const;

Retourwaarde

Het masker van de formaatgrepen van een CRectTracker item.

Opmerkingen

De formaatgrepen worden weergegeven aan de zijkanten en hoeken van de rechthoek en stellen de gebruiker in staat om de vorm en grootte van de rechthoek te bepalen.

Een rechthoek heeft 8 formaatgrepen genummerd 0-7. Elke formaatgreep wordt vertegenwoordigd door een beetje in het masker; de waarde van die bit is 2^ n, waarbij n het formaatgreepnummer is. Bits 0-3 komen overeen met de hoekgroottegrepen, beginnend bij de linkerbovenhoek met de klok mee. Bits 4-7 komen overeen met de formaatgrepen aan de zijkant vanaf de bovenkant met de klok mee. In de volgende afbeelding ziet u de formaatgrepen van een rechthoek en de bijbehorende formaatgreepnummers en -waarden:

Formaat van greepnummers wijzigen.

De standaard implementatie van GetHandleMask retourneert het masker van de bits, zodat de formaatgrepen worden weergegeven. Als de enkele bit is ingeschakeld, wordt de bijbehorende formaatgreep getekend.

Overschrijf deze lidfunctie om de aangegeven formaatgrepen te verbergen of weer te geven.

CRectTracker::GetTrueRect

Roep deze functie aan om de coördinaten van de rechthoek op te halen.

void GetTrueRect(LPRECT lpTrueRect) const;

Parameterwaarden

lpTrueRect
Wijs de RECT structuur aan die de apparaatcoördinaten van het CRectTracker object bevat.

Opmerkingen

De afmetingen van de rechthoek bevatten de hoogte en breedte van eventuele formaatgrepen die zich op de buitenrand bevinden. Bij terugkeer is lpTrueRect altijd een genormaliseerde rechthoek in apparaatcoördinaten.

CRectTracker::HitTest

Roep deze functie aan om erachter te komen of de gebruiker een formaatgreep heeft opgehaald.

int HitTest(CPoint point) const;

Parameterwaarden

Punt
Het punt, in apparaatcoördinaten, om te testen.

Retourwaarde

De geretourneerde waarde is gebaseerd op het geïnventariseerd type CRectTracker::TrackerHit en kan een van de volgende waarden hebben:

  • 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

De grootte, in pixels, van de CRectTracker formaatgrepen.

int m_nHandleSize;

Opmerkingen

Geïnitialiseerd met de standaardsysteemwaarde.

CRectTracker::m_rect

De huidige positie van de rechthoek in clientcoördinaten (pixels).

CRect m_rect;

CRectTracker::m_sizeMin

De minimale grootte van de rechthoek.

CSize m_sizeMin;

Opmerkingen

Zowel standaardwaarden als cxcy, worden berekend op basis van de standaardsysteemwaarde voor de randbreedte. Dit gegevenslid wordt alleen gebruikt door de AdjustRect lidfunctie.

CRectTracker::m_nStyle

Huidige stijl van de rechthoek.

UINT m_nStyle;

Opmerkingen

Zie CRectTracker::CRectTracker voor een lijst met mogelijke stijlen.

CRectTracker::NormalizeHit

Roep deze functie aan om een mogelijk omgekeerde ingang te converteren.

int NormalizeHit(int nHandle) const;

Parameterwaarden

nHandle
Afhandelen die door de gebruiker is geselecteerd.

Retourwaarde

De index van de genormaliseerde ingang.

Opmerkingen

Wanneer CRectTracker::Track of CRectTracker::TrackRubberBand wordt aangeroepen met omkering, is het mogelijk dat de rechthoek wordt omgekeerd op de x-as, de y-as of beide. Als dit gebeurt, HitTest worden er ingangen geretourneerd die ook worden omgekeerd met betrekking tot de rechthoek. Dit is ongepast voor het tekenen van cursorfeedback omdat de feedback afhankelijk is van de schermpositie van de rechthoek, niet het gedeelte van de gegevensstructuur van de rechthoek die wordt gewijzigd.

CRectTracker::OnChangedRect

Aangeroepen door het framework wanneer de rechthoek van de tracker is gewijzigd tijdens een aanroep naar Track.

virtual void OnChangedRect(const CRect& rectOld);

Parameterwaarden

rectOld
Bevat de oude apparaatcoördinaten van het CRectTracker object.

Opmerkingen

Op het moment dat deze functie wordt aangeroepen, is alle feedback waarmee DrawTrackerRect wordt getekend, verwijderd. De standaard implementatie van deze functie doet niets.

Overschrijf deze functie wanneer u acties wilt uitvoeren nadat het formaat van de rechthoek is gewijzigd.

CRectTracker::SetCursor

Roep deze functie aan om de cursorshape te wijzigen terwijl deze zich boven het gebied van het CRectTracker object bevindt.

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

Parameterwaarden

pWnd
Verwijst naar het venster dat momenteel de cursor bevat.

nHitTest
Resultaten van de vorige hittest, uit het WM_SETCURSOR bericht.

Retourwaarde

Nonzero als de vorige hit over de rechthoek van de tracker ging; anders 0.

Opmerkingen

Roep deze functie aan vanuit de functie van het venster dat het WM_SETCURSOR bericht verwerkt (meestal OnSetCursor).

CRectTracker::Track

Roep deze functie aan om de gebruikersinterface weer te geven voor het wijzigen van het formaat van de rechthoek.

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

Parameterwaarden

pWnd
Het vensterobject dat de rechthoek bevat.

Punt
Apparaatcoördinaten van de huidige muispositie ten opzichte van het clientgebied.

bAllowInvert
Indien WAAR, kan de rechthoek worden omgekeerd langs de x-as of y-as; anders ONWAAR.

pWndClipTo
Het venster waarnaar tekenbewerkingen worden geknipt. Als NULL, wordt pWnd gebruikt als de rechthoek voor knippen.

Retourwaarde

Als de ESC-toets wordt ingedrukt, wordt het traceringsproces gestopt, wordt de rechthoek die is opgeslagen in de tracker niet gewijzigd en wordt 0 geretourneerd. Als de wijziging wordt doorgevoerd door de muis te verplaatsen en de linkermuisknop los te laten, wordt de nieuwe positie en/of grootte vastgelegd in de rechthoek van de tracker en wordt niet-nul geretourneerd.

Opmerkingen

Dit wordt meestal aangeroepen vanuit de functie van uw toepassing die het WM_LBUTTONDOWN bericht verwerkt (meestal OnLButtonDown).

Met deze functie wordt de muis vastgelegd totdat de gebruiker de linkermuisknop loslaat, op esc drukt of op de rechtermuisknop drukt. Wanneer de gebruiker de muisaanwijzer verplaatst, wordt de feedback bijgewerkt door te bellen DrawTrackerRect en OnChangedRect.

Als bAllowInvert TRUE is, kan de rechthoek voor het bijhouden worden omgekeerd op de x-as of y-as.

CRectTracker::TrackRubberBand

Roep deze functie aan om rubber-bandselectie uit te voeren.

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

Parameterwaarden

pWnd
Het vensterobject dat de rechthoek bevat.

Punt
Apparaatcoördinaten van de huidige muispositie ten opzichte van het clientgebied.

bAllowInvert
Indien WAAR, kan de rechthoek worden omgekeerd langs de x-as of y-as; anders ONWAAR.

Retourwaarde

Niet-nul als de muis is verplaatst en de rechthoek niet leeg is; anders 0.

Opmerkingen

Het wordt meestal aangeroepen vanuit de functie van uw toepassing die het WM_LBUTTONDOWN bericht (meestal OnLButtonDown) verwerkt.

Met deze functie wordt de muis vastgelegd totdat de gebruiker de linkermuisknop loslaat, op esc drukt of op de rechtermuisknop drukt. Wanneer de gebruiker de muisaanwijzer verplaatst, wordt de feedback bijgewerkt door te bellen DrawTrackerRect en OnChangedRect.

Bijhouden wordt uitgevoerd met een rubber-band-type selectie uit de rechterbenedenhoek. Als omkering is toegestaan, kan de rechthoek worden aangepast door omhoog en naar links of omlaag en naar rechts te slepen.

Zie ook

MFC Sample TRACKER
MFC-voorbeeldTEKENING
Hiërarchiegrafiek
Klasse COleResizeBar
CRect-klasse