Freigeben über


CRectTracker-Klasse

Ermöglicht das Anzeigen, Verschieben und Ändern der Größe eines Elements auf unterschiedliche Weise.

Syntax

class CRectTracker

Member

Öffentliche Konstruktoren

Name Beschreibung
CRectTracker::CRectTracker Erstellt ein CRectTracker-Objekt.

Öffentliche Methoden

Name Beschreibung
CRectTracker::AdjustRect Wird aufgerufen, wenn die Größe des Rechtecks geändert wird.
CRectTracker::D raw Rendert das Rechteck.
CRectTracker::D rawTrackerRect Wird beim Zeichnen des Rahmens eines CRectTracker Objekts aufgerufen.
CRectTracker::GetHandleMask Wird aufgerufen, um die Maske der Ziehpunkte zum Ändern der Größe eines CRectTracker Elements abzurufen.
CRectTracker::GetTrueRect Gibt Breite und Höhe des Rechtecks zurück, einschließlich Ziehpunkte zur Größenänderung.
CRectTracker::HitTest Gibt die aktuelle Position des Cursors zurück, der mit dem CRectTracker Objekt verknüpft ist.
CRectTracker::NormalizeHit Normalisiert einen Treffertestcode.
CRectTracker::OnChangedRect Wird aufgerufen, wenn die Größe des Rechtecks geändert oder verschoben wurde.
CRectTracker::SetCursor Legt den Cursor abhängig von seiner Position über dem Rechteck fest.
CRectTracker::Track Ermöglicht es dem Benutzer, das Rechteck zu bearbeiten.
CRectTracker::TrackRubberBand Ermöglicht dem Benutzer das "Gummiband" der Auswahl.

Öffentliche Datenmember

Name Beschreibung
CRectTracker::m_nHandleSize Bestimmt die Größe von Ziehpunkten zur Größenänderung.
CRectTracker::m_nStyle Aktuelle Formatvorlagen des Trackers.
CRectTracker::m_rect Aktuelle Position (in Pixel) des Rechtecks.
CRectTracker::m_sizeMin Bestimmt die Mindestbreite und Höhe des Rechtecks.

Hinweise

CRectTracker besitzt keine Basisklasse.

Obwohl die CRectTracker Klasse so konzipiert ist, dass der Benutzer mithilfe einer grafischen Benutzeroberfläche mit OLE-Elementen interagieren kann, ist die Verwendung nicht auf OLE-fähige Anwendungen beschränkt. Sie kann überall verwendet werden, wo eine solche Benutzeroberfläche erforderlich ist.

CRectTracker Rahmen können einfarbige oder gepunktete Linien sein. Das Element kann mit einem geschlüpften Rahmen versehen oder mit einem geschlüpften Muster überlagert werden, um unterschiedliche Zustände des Elements anzuzeigen. Sie können acht Ziehpunkte für die Größe entweder auf der Außenseite oder am Innenrand des Elements platzieren. (Eine Erläuterung der Ziehpunkte zur Größenänderung finden Sie unter GetHandleMask.) CRectTracker Schließlich können Sie die Ausrichtung eines Elements während der Größenänderung ändern.

Erstellen Sie zum Verwenden CRectTrackerein CRectTracker Objekt, und geben Sie an, welche Anzeigezustände initialisiert werden. Sie können diese Schnittstelle dann verwenden, um dem Benutzer visuelles Feedback zum aktuellen Status des OLE-Elements zu geben, das dem CRectTracker Objekt zugeordnet ist.

Weitere Informationen zur Verwendung CRectTrackerfinden Sie im Artikel Tracker.

Vererbungshierarchie

CRectTracker

Anforderungen

Header: afxext.h

CRectTracker::AdjustRect

Wird vom Framework aufgerufen, wenn die Größe des Nachverfolgungsrechtecks mithilfe eines Ziehpunkts zur Größenänderung geändert wird.

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

Parameter

nHandle
Index des verwendeten Handles.

lpRect
Zeiger auf die aktuelle Größe des Rechtecks. (Die Größe eines Rechtecks wird durch seine Höhe und Breite angegeben.)

Hinweise

Das Standardverhalten dieser Funktion ermöglicht es, die Ausrichtung des Rechtecks nur zu ändern, wenn Track und TrackRubberBand mit Invertierung aufgerufen wird.

Überschreiben Sie diese Funktion, um die Anpassung des Nachverfolgungsrechtecks während eines Ziehvorgangs zu steuern. Eine Methode besteht darin, die von lpRect angegebenen Koordinaten vor der Rückgabe anzupassen.

Spezielle Features, die nicht direkt unterstützt CRectTrackerwerden, z. B. Snap-to-Grid oder Keep-Aspect-Ratio, können durch Überschreiben dieser Funktion implementiert werden.

CRectTracker::CRectTracker

Erstellt und initialisiert ein CRectTracker Objekt.

CRectTracker();

CRectTracker(
    LPCRECT lpSrcRect,
    UINT nStyle);

Parameter

lpSrcRect
Die Koordinaten des Rechteckobjekts.

nStyle
Gibt die Formatvorlage des CRectTracker Objekts an. Die folgenden Stile werden unterstützt:

  • CRectTracker::solidLine Verwenden Sie eine durchgezogene Linie für den Rechteckrahmen.

  • CRectTracker::dottedLine Verwenden Sie eine gepunktete Linie für den Rechteckrahmen.

  • CRectTracker::hatchedBorder Verwenden Sie ein geschlüpftes Muster für den Rechteckrahmen.

  • CRectTracker::resizeInside Ändern Sie die Größe von Ziehpunkten innerhalb des Rechtecks.

  • CRectTracker::resizeOutside Ändern Sie die Größe von Ziehpunkten außerhalb des Rechtecks.

  • CRectTracker::hatchInside Das geschlüpfte Muster deckt das gesamte Rechteck ab.

Hinweise

Der Standardkonstruktor initialisiert das CRectTracker Objekt mit den Werten von lpSrcRect und initialisiert andere Größen auf Systemstandardwerte. Wenn das Objekt ohne Parameter erstellt wird, werden die m_rect Elemente und m_nStyle Die Datenmmber nicht initialisiert.

CRectTracker::D raw

Rufen Sie diese Funktion auf, um die äußeren Linien und den inneren Bereich des Rechtecks zu zeichnen.

void Draw(CDC* pDC) const;

Parameter

pDC
Zeigen Sie auf den Gerätekontext, auf dem gezeichnet werden soll.

Hinweise

Der Stil des Trackers bestimmt, wie die Zeichnung erfolgt. Weitere Informationen zu den verfügbaren Formatvorlagen finden Sie im Konstruktor CRectTracker .

CRectTracker::D rawTrackerRect

Wird vom Framework aufgerufen, wenn sich die Position des Trackers innerhalb der Track Oder TrackRubberBand Memberfunktion geändert hat.

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

Parameter

lpRect
Zeigen Sie auf das RECT Rechteck, das das zu zeichnende Rechteck enthält.

pWndClipTo
Zeigen Sie auf das Fenster, das beim Ausschneiden des Rechtecks verwendet werden soll.

pDC
Zeigen Sie auf den Gerätekontext, auf dem gezeichnet werden soll.

pWnd
Zeigen Sie auf das Fenster, in dem die Zeichnung erfolgt.

Hinweise

Die Standardimplementierung ruft ein , CDC::DrawFocusRectdas ein gepunktetes Rechteck zeichnet.

Überschreiben Sie diese Funktion, um während des Nachverfolgungsvorgangs unterschiedliche Feedback zu geben.

CRectTracker::GetHandleMask

Das Framework ruft diese Memberfunktion auf, um die Maske für die Ziehpunkte zum Ändern der Größe eines Rechtecks abzurufen.

virtual UINT GetHandleMask() const;

Rückgabewert

Die Maske der Ziehpunkte zum Ändern der Größe eines CRectTracker Elements.

Hinweise

Die Ziehpunkte für die Größenänderung werden an den Seiten und Ecken des Rechtecks angezeigt und ermöglichen es dem Benutzer, die Form und Größe des Rechtecks zu steuern.

Ein Rechteck verfügt über 8 Ziehpunkte mit der Nummer 0-7. Jeder Ziehpunkt für die Größenänderung wird durch ein Bit in der Maske dargestellt. der Wert dieses Bits ist 2^ n, wobei n die Ziehpunktnummer der Größenänderung ist. Bits 0-3 entsprechen den Eckziehpunkten, beginnend mit der oberen linken Bewegung im Uhrzeigersinn. Bits 4-7 entsprechen den seitlichen Größenänderungsziehpunkten, beginnend mit dem Uhrzeigersinn oben. Die folgende Abbildung zeigt die Ziehpunkte für die Größenänderung eines Rechtecks und die entsprechenden Größenänderungsziehpunkte für Zahlen und Werte:

Resize handle numbers.

Die Standardimplementierung gibt GetHandleMask die Maske der Bits zurück, sodass die Ziehpunkte für die Größenänderung angezeigt werden. Wenn das einzelne Bit aktiviert ist, wird der entsprechende Ziehpunkt für die Größenänderung gezeichnet.

Überschreiben Sie diese Memberfunktion, um die angegebenen Ziehpunkte zur Größenänderung auszublenden oder anzuzeigen.

CRectTracker::GetTrueRect

Rufen Sie diese Funktion auf, um die Koordinaten des Rechtecks abzurufen.

void GetTrueRect(LPRECT lpTrueRect) const;

Parameter

lpTrueRect
Zeigen Sie auf die RECT Struktur, die die Gerätekoordinaten des CRectTracker Objekts enthält.

Hinweise

Die Abmessungen des Rechtecks umfassen die Höhe und Breite aller Größenänderungsziehpunkte, die sich auf dem äußeren Rahmen befinden. Bei der Rückgabe ist lpTrueRect immer ein normalisiertes Rechteck in Gerätekoordinaten.

CRectTracker::HitTest

Rufen Sie diese Funktion auf, um herauszufinden, ob der Benutzer einen Ziehpunkt für die Größenänderung gefunden hat.

int HitTest(CPoint point) const;

Parameter

Punkt
Der zu testende Punkt in Gerätekoordinaten.

Rückgabewert

Der zurückgegebene Wert basiert auf dem Aufzählungstyp CRectTracker::TrackerHit und kann einen der folgenden Werte aufweisen:

  • 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

Die Größe der Ziehpunkte für die CRectTracker Größenänderung in Pixeln.

int m_nHandleSize;

Hinweise

Initialisiert mit dem Standardwert des Systems.

CRectTracker::m_rect

Die aktuelle Position des Rechtecks in Clientkoordinaten (Pixel).

CRect m_rect;

CRectTracker::m_sizeMin

Die Mindestgröße des Rechtecks.

CSize m_sizeMin;

Hinweise

Sowohl Standardwerte cxcyals auch , werden aus dem Standardwert des Systems für die Rahmenbreite berechnet. Dieses Datenelement wird nur von der AdjustRect Memberfunktion verwendet.

CRectTracker::m_nStyle

Aktuelle Formatvorlage des Rechtecks.

UINT m_nStyle;

Hinweise

Eine Liste möglicher Formatvorlagen finden Sie unter CRectTracker::CRectTracker .

CRectTracker::NormalizeHit

Rufen Sie diese Funktion auf, um ein potenziell invertiertes Handle zu konvertieren.

int NormalizeHit(int nHandle) const;

Parameter

nHandle
Behandeln, das vom Benutzer ausgewählt wurde.

Rückgabewert

Der Index des normalisierten Handles.

Hinweise

Wenn CRectTracker::Track oder CRectTracker::TrackRubberBand mit Invertierung aufgerufen wird, ist es möglich, dass das Rechteck auf der X-Achse, der Y-Achse oder beides invertiert werden kann. In diesem Fall werden auch Ziehpunkte zurückgegeben, HitTest die in Bezug auf das Rechteck umgekehrt sind. Dies ist für das Zeichnen des Cursorfeedbacks ungeeignet, da das Feedback von der Bildschirmposition des Rechtecks abhängt, nicht von dem Teil der Rechteckdatenstruktur, der geändert wird.

CRectTracker::OnChangedRect

Wird vom Framework aufgerufen, wenn sich das Trackerrechteck während eines Aufrufs Trackgeändert hat.

virtual void OnChangedRect(const CRect& rectOld);

Parameter

rectOld
Enthält die alten Gerätekoordinaten des CRectTracker Objekts.

Hinweise

Zu dem Zeitpunkt, zu dem diese Funktion aufgerufen wird, wurde das gesamte mit ihr gezeichnete DrawTrackerRect Feedback entfernt. Bei der Standardimplementierung dieser Funktion wird keine Aktion ausgeführt.

Überschreiben Sie diese Funktion, wenn Sie Aktionen ausführen möchten, nachdem die Größe des Rechtecks geändert wurde.

CRectTracker::SetCursor

Rufen Sie diese Funktion auf, um das Cursor-Shape zu ändern, während es sich über dem CRectTracker Bereich des Objekts befindet.

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

Parameter

pWnd
Zeigt auf das Fenster, das derzeit den Cursor enthält.

nHitTest
Ergebnisse des vorherigen Treffertests aus der WM_SETCURSOR Nachricht.

Rückgabewert

Nonzero, wenn der vorherige Treffer über das Tracker-Rechteck war; andernfalls 0.

Hinweise

Rufen Sie diese Funktion innerhalb der Funktion Ihres Fensters auf, die die WM_SETCURSOR Nachricht verarbeitet (in der Regel OnSetCursor).

CRectTracker::Track

Rufen Sie diese Funktion auf, um die Benutzeroberfläche zum Ändern der Größe des Rechtecks anzuzeigen.

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

Parameter

pWnd
Das Fensterobjekt, das das Rechteck enthält.

Punkt
Gerätekoordinaten der aktuellen Mausposition relativ zum Clientbereich.

bAllowInvert
Wenn WAHR, kann das Rechteck entlang der X-Achse oder der Y-Achse invertiert werden. andernfalls FALSE.

pWndClipTo
Das Fenster, in dem Zeichnungsvorgänge abgeschnitten werden. Wenn NULL, wird pWnd als Beschneidungsrechteck verwendet.

Rückgabewert

Wenn die ESC-Taste gedrückt wird, wird der Nachverfolgungsprozess angehalten, das im Tracker gespeicherte Rechteck wird nicht geändert, und 0 wird zurückgegeben. Wenn die Änderung übernommen wird, wird durch Bewegen der Maus und Loslassen der linken Maustaste die neue Position und/oder Größe im Rechteck des Trackers aufgezeichnet, und nonzero wird zurückgegeben.

Hinweise

Dies wird in der Regel innerhalb der Funktion Ihrer Anwendung aufgerufen, die die Nachricht verarbeitet (in der WM_LBUTTONDOWN Regel OnLButtonDown).

Diese Funktion erfasst die Maus, bis der Benutzer die linke Maustaste loslässt, die ESC-TASTE drückt oder die rechte Maustaste drückt. Wenn der Benutzer den Mauszeiger bewegt, wird das Feedback durch Aufrufen und OnChangedRectAufrufen DrawTrackerRect aktualisiert.

Wenn bAllowInvert WAHR ist, kann das Nachverfolgungsrechteck auf der X-Achse oder der Y-Achse invertiert werden.

CRectTracker::TrackRubberBand

Rufen Sie diese Funktion auf, um die Gummibandauswahl zu erledigen.

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

Parameter

pWnd
Das Fensterobjekt, das das Rechteck enthält.

Punkt
Gerätekoordinaten der aktuellen Mausposition relativ zum Clientbereich.

bAllowInvert
Wenn WAHR, kann das Rechteck entlang der X-Achse oder der Y-Achse invertiert werden. andernfalls FALSE.

Rückgabewert

Nonzero, wenn die Maus verschoben wurde und das Rechteck nicht leer ist; andernfalls 0.

Hinweise

Sie wird in der Regel innerhalb der Funktion Ihrer Anwendung aufgerufen, die die WM_LBUTTONDOWN Nachricht verarbeitet (in der Regel OnLButtonDown).

Diese Funktion erfasst die Maus, bis der Benutzer die linke Maustaste loslässt, die ESC-TASTE drückt oder die rechte Maustaste drückt. Wenn der Benutzer den Mauszeiger bewegt, wird das Feedback durch Aufrufen und OnChangedRectAufrufen DrawTrackerRect aktualisiert.

Die Nachverfolgung erfolgt mit einer Gummiband-Typauswahl vom unteren rechten Ziehpunkt. Wenn die Invertierung zulässig ist, kann das Rechteck durch Ziehen nach oben und nach links oder nach unten und nach rechts angepasst werden.

Siehe auch

MFC-Beispiel-TRACKER
MFC-Beispiel DRAWCLI
Hierarchiediagramm
COleResizeBar-Klasse
CRect-Klasse