Share via


CRectTracker, classe

Permet à un élément d’être affiché, déplacé et redimensionné de différentes manières.

Syntaxe

class CRectTracker

Membres

Constructeurs publics

Nom Description
CRectTracker ::CRectTracker Construit un objet CRectTracker.

Méthodes publiques

Nom Description
CRectTracker ::AdjustRect Appelé lorsque le rectangle est redimensionné.
CRectTracker ::D raw Affiche le rectangle.
CRectTracker ::D rawTrackerRect Appelé lors du dessin de la bordure d’un CRectTracker objet.
CRectTracker ::GetHandleMask Appelé pour obtenir le masque des poignées de redimensionnement d’un CRectTracker élément.
CRectTracker ::GetTrueRect Retourne la largeur et la hauteur du rectangle, y compris les poignées de redimensionnement.
CRectTracker ::HitTest Retourne la position actuelle du curseur lié à l’objet CRectTracker .
CRectTracker ::NormalizeHit Normalise un code de test de positionnement.
CRectTracker ::OnChangedRect Appelé lorsque le rectangle a été redimensionné ou déplacé.
CRectTracker ::SetCursor Définit le curseur, en fonction de sa position sur le rectangle.
CRectTracker ::Track Permet à l’utilisateur de manipuler le rectangle.
CRectTracker ::TrackRubberBand Permet à l’utilisateur de « bande en caoutchouc » la sélection.

Membres de données publics

Nom Description
CRectTracker ::m_nHandleSize Détermine la taille des handles de redimensionnement.
CRectTracker ::m_nStyle Style(s) actuel(s) du suivi.
CRectTracker ::m_rect Position actuelle (en pixels) du rectangle.
CRectTracker ::m_sizeMin Détermine la largeur et la hauteur minimales du rectangle.

Notes

CRectTracker n’a pas de classe de base.

Bien que la CRectTracker classe soit conçue pour permettre à l’utilisateur d’interagir avec des éléments OLE à l’aide d’une interface graphique, son utilisation n’est pas limitée aux applications compatibles OLE. Il peut être utilisé n’importe où une telle interface utilisateur est requise.

CRectTracker les bordures peuvent être solides ou pointillées. L’élément peut être doté d’une bordure hachurée ou superposée avec un modèle hachré pour indiquer différents états de l’élément. Vous pouvez placer huit poignées de redimensionnement sur l’extérieur ou la bordure intérieure de l’élément. (Pour obtenir une explication des handles de redimensionnement, consultez GetHandleMask.) Enfin, un CRectTracker vous permet de modifier l’orientation d’un élément pendant le redimensionnement.

Pour utiliser CRectTracker, construisez un CRectTracker objet et spécifiez les états d’affichage qui sont initialisés. Vous pouvez ensuite utiliser cette interface pour donner à l’utilisateur des commentaires visuels sur l’état actuel de l’élément OLE associé à l’objet CRectTracker .

Pour plus d’informations sur l’utilisation CRectTracker, consultez l’article Trackers.

Hiérarchie d'héritage

CRectTracker

Spécifications

En-tête : afxext.h

CRectTracker ::AdjustRect

Appelé par l’infrastructure lorsque le rectangle de suivi est redimensionné à l’aide d’un handle de redimensionnement.

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

Paramètres

nHandle
Index de handle utilisé.

lpRect
Pointeur vers la taille actuelle du rectangle. (La taille d’un rectangle est donnée par sa hauteur et sa largeur.)

Notes

Le comportement par défaut de cette fonction permet à l’orientation du rectangle de changer uniquement quand Track et TrackRubberBand sont appelés avec l’inverse autorisé.

Remplacez cette fonction pour contrôler l’ajustement du rectangle de suivi pendant une opération de glissement. Une méthode consiste à ajuster les coordonnées spécifiées par lpRect avant de retourner.

Les fonctionnalités spéciales qui ne sont pas directement prises en charge par CRectTracker, telles que le composant logiciel enfichable ou le ratio d’aspect continu, peuvent être implémentées en remplaçant cette fonction.

CRectTracker ::CRectTracker

Crée et initialise un CRectTracker objet.

CRectTracker();

CRectTracker(
    LPCRECT lpSrcRect,
    UINT nStyle);

Paramètres

lpSrcRect
Coordonnées de l’objet rectangle.

nStyle
Spécifie le style de l’objet CRectTracker . Les styles suivants sont pris en charge :

  • CRectTracker::solidLine Utilisez une ligne unie pour la bordure rectangle.

  • CRectTracker::dottedLine Utilisez une ligne en pointillé pour la bordure du rectangle.

  • CRectTracker::hatchedBorder Utilisez un modèle haché pour la bordure rectangle.

  • CRectTracker::resizeInside Redimensionnez les poignées situées à l’intérieur du rectangle.

  • CRectTracker::resizeOutside Redimensionnez les poignées situées en dehors du rectangle.

  • CRectTracker::hatchInside Le motif haché couvre l’intégralité du rectangle.

Notes

Le constructeur par défaut initialise l’objet CRectTracker avec les valeurs de lpSrcRect et initialise d’autres tailles par défaut au système. Si l’objet est créé sans paramètres, les m_rect membres de données et m_nStyle les membres de données ne sont pas initialisés.

CRectTracker ::D raw

Appelez cette fonction pour dessiner les lignes externes et la région interne du rectangle.

void Draw(CDC* pDC) const;

Paramètres

pDC
Pointeur vers le contexte de l’appareil sur lequel dessiner.

Notes

Le style du suivi détermine la façon dont le dessin est effectué. Pour plus d’informations sur les styles disponibles, consultez le constructeur CRectTracker .

CRectTracker ::D rawTrackerRect

Appelé par l’infrastructure chaque fois que la position du suivi a changé à l’intérieur de la Track fonction ou TrackRubberBand membre.

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

Paramètres

lpRect
Pointeur vers le RECT rectangle à dessiner.

pWndClipTo
Pointeur vers la fenêtre à utiliser dans le découpage du rectangle.

pDC
Pointeur vers le contexte de l’appareil sur lequel dessiner.

Pwnd
Pointeur vers la fenêtre sur laquelle le dessin se produira.

Notes

L’implémentation par défaut effectue un appel à CDC::DrawFocusRect, qui dessine un rectangle en pointillés.

Remplacez cette fonction pour fournir des commentaires différents pendant l’opération de suivi.

CRectTracker ::GetHandleMask

L’infrastructure appelle cette fonction membre pour récupérer le masque pour les handles de redimensionnement d’un rectangle.

virtual UINT GetHandleMask() const;

Valeur de retour

Masque des poignées de redimensionnement d’un CRectTracker élément.

Notes

Les poignées de redimensionnement apparaissent sur les côtés et les angles du rectangle et permettent à l’utilisateur de contrôler la forme et la taille du rectangle.

Un rectangle a 8 handles de redimensionnement numérotés 0-7. Chaque handle de redimensionnement est représenté par un peu dans le masque ; la valeur de ce bit est 2^ n, où n est le numéro de handle de redimensionnement. Les bits 0-3 correspondent aux poignées de redimensionnement d’angle, en commençant au niveau supérieur gauche du déplacement des aiguilles d’une montre. Les bits 4-7 correspondent aux poignées de redimensionnement latérales commençant au niveau supérieur de l’horloge. L’illustration suivante montre les handles de redimensionnement d’un rectangle et leurs nombres et valeurs de handle de redimensionnement correspondants :

Resize handle numbers.

L’implémentation par défaut de GetHandleMask retourne le masque des bits afin que les poignées de redimensionnement apparaissent. Si le bit unique est activé, le handle de redimensionnement correspondant est dessiné.

Remplacez cette fonction membre pour masquer ou afficher les handles de redimensionnement indiqués.

CRectTracker ::GetTrueRect

Appelez cette fonction pour récupérer les coordonnées du rectangle.

void GetTrueRect(LPRECT lpTrueRect) const;

Paramètres

lpTrueRect
Pointeur vers la RECT structure qui contiendra les coordonnées de l’appareil de l’objet CRectTracker .

Notes

Les dimensions du rectangle incluent la hauteur et la largeur des poignées de redimensionnement situées sur la bordure externe. Lors du retour, lpTrueRect est toujours un rectangle normalisé dans les coordonnées de l’appareil.

CRectTracker ::HitTest

Appelez cette fonction pour savoir si l’utilisateur a saisi un handle de redimensionnement.

int HitTest(CPoint point) const;

Paramètres

Point
Point, dans les coordonnées de l’appareil, à tester.

Valeur de retour

La valeur retournée est basée sur le type CRectTracker::TrackerHit énuméré et peut avoir l’une des valeurs suivantes :

  • 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

Taille, en pixels, des poignées de CRectTracker redimensionnement.

int m_nHandleSize;

Notes

Initialisé avec la valeur système par défaut.

CRectTracker ::m_rect

Position actuelle du rectangle dans les coordonnées du client (pixels).

CRect m_rect;

CRectTracker ::m_sizeMin

Taille minimale du rectangle.

CSize m_sizeMin;

Notes

Les valeurs par défaut et cxcy, sont calculées à partir de la valeur système par défaut pour la largeur de bordure. Ce membre de données est utilisé uniquement par la AdjustRect fonction membre.

CRectTracker ::m_nStyle

Style actuel du rectangle.

UINT m_nStyle;

Notes

Consultez CRectTracker ::CRectTracker pour obtenir la liste des styles possibles.

CRectTracker ::NormalizeHit

Appelez cette fonction pour convertir un handle potentiellement inversé.

int NormalizeHit(int nHandle) const;

Paramètres

nHandle
Gérer sélectionné par l’utilisateur.

Valeur de retour

Index du handle normalisé.

Notes

Quand CRectTracker::Track ou CRectTracker::TrackRubberBand est appelé avec inverting autorisé, il est possible que le rectangle soit inversé sur l’axe x, l’axe y ou les deux. Lorsque cela se produit, HitTest retourne des handles qui sont également inversés par rapport au rectangle. Cela n’est pas approprié pour dessiner les commentaires du curseur, car le retour dépend de la position de l’écran du rectangle, et non de la partie de la structure de données du rectangle qui sera modifiée.

CRectTracker ::OnChangedRect

Appelé par l’infrastructure chaque fois que le rectangle de suivi a changé lors d’un appel à Track.

virtual void OnChangedRect(const CRect& rectOld);

Paramètres

rectOld
Contient les anciennes coordonnées de l’appareil de l’objet CRectTracker .

Notes

Au moment où cette fonction est appelée, tous les commentaires dessinés avec DrawTrackerRect ont été supprimés. L’implémentation par défaut de cette fonction est sans effet.

Remplacez cette fonction lorsque vous souhaitez effectuer des actions après le redimensionnement du rectangle.

CRectTracker ::SetCursor

Appelez cette fonction pour modifier la forme du curseur pendant qu’elle se trouve sur la région de l’objet CRectTracker .

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

Paramètres

Pwnd
Pointe vers la fenêtre qui contient actuellement le curseur.

nHitTest
Résultats du test de positionnement précédent, à partir du message WM_SETCURSOR.

Valeur de retour

Différent de zéro si l’accès précédent était sur le rectangle de suivi ; sinon 0.

Notes

Appelez cette fonction à partir de l’intérieur de la fonction de votre fenêtre qui gère le message WM_SETCURSOR (généralement OnSetCursor).

CRectTracker ::Track

Appelez cette fonction pour afficher l’interface utilisateur pour redimensionner le rectangle.

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

Paramètres

Pwnd
Objet de fenêtre qui contient le rectangle.

Point
Coordonnées de l’appareil de la position actuelle de la souris par rapport à la zone cliente.

bAllowInvert
Si la valeur est TRUE, le rectangle peut être inversé le long de l’axe x ou de l’axe y ; sinon FALSE.

pWndClipTo
Fenêtre vers laquelle les opérations de dessin sont découpées. Si la valeur EST NULL, pWnd est utilisé comme rectangle de découpage.

Valeur de retour

Si la touche ÉCHAP est enfoncée, le processus de suivi est arrêté, le rectangle stocké dans le suivi n’est pas modifié et 0 est retourné. Si la modification est validée, en déplaçant la souris et en libérant le bouton gauche de la souris, la nouvelle position et/ou la taille sont enregistrées dans le rectangle du suivi et non zéro est retournée.

Notes

Cela est généralement appelé à partir de l’intérieur de la fonction de votre application qui gère le WM_LBUTTONDOWN message (généralement OnLButtonDown).

Cette fonction capture la souris jusqu’à ce que l’utilisateur relâche le bouton gauche de la souris, appuie sur la touche Échap ou appuie sur le bouton droit de la souris. Lorsque l’utilisateur déplace le curseur de la souris, les commentaires sont mis à jour en appelant DrawTrackerRect et OnChangedRect.

Si bAllowInvert a la valeur TRUE, le rectangle de suivi peut être inversé sur l’axe x ou l’axe y.

CRectTracker ::TrackRubberBand

Appelez cette fonction pour effectuer une sélection en caoutchouc.

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

Paramètres

Pwnd
Objet de fenêtre qui contient le rectangle.

Point
Coordonnées de l’appareil de la position actuelle de la souris par rapport à la zone cliente.

bAllowInvert
Si la valeur est TRUE, le rectangle peut être inversé le long de l’axe x ou de l’axe y ; sinon FALSE.

Valeur de retour

Différent de zéro si la souris a déplacé et que le rectangle n’est pas vide ; sinon 0.

Notes

Il est généralement appelé à partir de l’intérieur de la fonction de votre application qui gère le message WM_LBUTTONDOWN (généralement OnLButtonDown).

Cette fonction capture la souris jusqu’à ce que l’utilisateur relâche le bouton gauche de la souris, appuie sur la touche Échap ou appuie sur le bouton droit de la souris. Lorsque l’utilisateur déplace le curseur de la souris, les commentaires sont mis à jour en appelant DrawTrackerRect et OnChangedRect.

Le suivi est effectué avec une sélection de type élastique à partir de la poignée inférieure droite. Si l’inverse est autorisé, le rectangle peut être dimensionné en faisant glisser vers le haut et vers la gauche ou vers la gauche et vers la droite.

Voir aussi

Exemple DE SUIVI MFC
Exemple DRAWCLI MFC
Graphique hiérarchique
COleResizeBar, classe
CRect, classe