Étirement et mécanismes de traçage
Une autre fonctionnalité fournie avec des dispositifs de suivi est la sélection "élastique", qui permet à un utilisateur de sélectionner plusieurs éléments OLE en faisant glisser un rectangle de dimensionnement autour de les éléments à sélectionner. Lorsque l'utilisateur libère le bouton droit de la souris, les éléments dans la zone sélectionnée par l'utilisateur sont sélectionnés et peuvent être manipulés par l'utilisateur. Par exemple, l'utilisateur peut faire glisser la sélection dans une autre application conteneur.
Implémenter cette fonctionnalité nécessite un code supplémentaire dans la fonction gestionnaire WM_LBUTTONDOWN de votre application.
L'exemple de code suivant implémente la sélection élastique et des fonctionnalités supplémentaires.
else if (m_Tracker.HitTest(point) < 0)
{
// just to demonstrate CRectTracker::TrackRubberBand
CRectTracker trackerRubber;
if (trackerRubber.TrackRubberBand(this, point, TRUE))
{
MessageBeep(0); // beep indicates TRUE
// See if rubber band intersects
// with the doc's tracker
CRect rectT;
// so intersect rect works
trackerRubber.m_rect.NormalizeRect();
if (rectT.IntersectRect(trackerRubber.m_rect, m_Tracker.m_rect))
{
// If so, put resize handles on it (i.e. select it)
if (m_Tracker.m_nStyle & CRectTracker::resizeInside)
{
// swap from resize inside to resize outside for effect
m_Tracker.m_nStyle &= ~CRectTracker::resizeInside;
m_Tracker.m_nStyle |= CRectTracker::resizeOutside;
}
else
{
// Just use inside resize handles on first time
m_Tracker.m_nStyle &= ~CRectTracker::resizeOutside;
m_Tracker.m_nStyle |= CRectTracker::resizeInside;
}
GetDocument()->SetModifiedFlag();
GetDocument()->UpdateAllViews(NULL);
}
}
}
Si vous souhaitez autoriser l'orientation réversible du dispositif de suivi de l'étirement, vous devez appeler CRectTracker::TrackRubberBand avec le troisième paramètre à TRUE. N'oubliez pas qu'autoriser l'orientation réversible provoquera parfois l'inversion de CRectTracker::m_rect. Cela peut être corrigée par un appel à CRect::NormalizeRect.
Pour plus d'informations, consultez Éléments client de conteneur et Personnaliser le glisser-déplacer.
Voir aussi
Référence
Concepts
dispositifs de suivi : Implémenter des mécanismes de suivi dans votre application OLE