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 CRectTracker
ein 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 CRectTracker
finden 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 CRectTracker
werden, 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::DrawFocusRect
das 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:
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
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::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 cx
cy
als 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 Track
geä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 OnChangedRect
Aufrufen 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 OnChangedRect
Aufrufen 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