Bande élastique et dispositifs de suivi

Une autre fonctionnalité fournie avec des suivis est la sélection « en caoutchouc », qui permet à un utilisateur de sélectionner plusieurs éléments OLE en faisant glisser un rectangle de dimensionnement autour des éléments à sélectionner. Lorsque l’utilisateur libère le bouton gauche de la souris, les éléments de la région 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é nécessite du code supplémentaire dans la fonction de gestionnaire WM_LBUTTONDOWN de votre application.

L’exemple de code suivant implémente la sélection en caoutchouc 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 pendant la bande en caoutchouc, vous devez appeler CRectTracker ::TrackRubberBand avec le troisième paramètre défini sur TRUE. N’oubliez pas que l’autorisation de l’orientation réversible entraîne parfois l’inversion de CRectTracker ::m_rect . Cela peut être corrigé par un appel à CRect ::NormalizeRect.

Pour plus d’informations, consultez Éléments du client conteneur et glisser-déplacer OLE : Personnaliser le glisser-déplacer.

Voir aussi

Dispositifs de suivi : implémentation de dispositifs de suivi dans votre application OLE
CRectTracker, classe