Partager via


Étirement et mécanismes de traçage

Une autre fonctionnalité fournie avec les mécanismes de trace est la sélection de « caoutchouc-bande », qui permet à un utilisateur de sélectionner plusieurs OLE éléments en faisant glisser un rectangle de redimensionnement autour des éléments à sélectionner.Lorsque l'utilisateur relâche le bouton gauche de la souris, des é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.

L'implémentation de cette fonctionnalité requiert un code supplémentaire dans la fonction gestionnaire d' WM_LBUTTONDOWN de votre application.

L'exemple de code suivant implémente la sélection et les fonctionnalités de caoutchouc-bande.

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 pendant l'étirement, vous devez appeler CRectTracker::TrackRubberBand avec le troisième paramètre a TRUE.N'oubliez pas que permet l'orientation réversible fait parfois soit CRectTracker::m_rect inversé.Cela peut être corrigé par un appel à CRect::NormalizeRect.

Pour plus d'informations, consultez éléments client de conteneur et le personnaliser le glisser-déplacer.

Voir aussi

Référence

CRectTracker, classe

Concepts

Mécanismes de suivi : Implémenter des mécanismes de traçage dans votre application OLE