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 objet CRectTracker
.
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 :
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
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::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 cx
cy
, 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