Sdílet prostřednictvím


Rubber-Banding a sledovače

Další funkcí dodávanou s trackery je výběr gumové pásky, která uživateli umožňuje vybrat více položek OLE přetažením obdélníku velikosti kolem položek, které se mají vybrat. Když uživatel uvolní levé tlačítko myši, vyberou se položky v oblasti vybrané uživatelem a uživatel s nimi může manipulovat. Uživatel může například přetáhnout výběr do jiné aplikace kontejneru.

Implementace této funkce vyžaduje další kód ve funkci obslužné rutiny WM_LBUTTONDOWN vaší aplikace.

Následující ukázka kódu implementuje výběr gumových pásů a další funkce.

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);
   }
}
}

Pokud chcete povolit reverzibilní orientaci trackeru během gumování, měli byste volat CRectTracker::TrackRubberBand s třetím parametrem nastaveným na TRUE. Nezapomeňte, že povolení reverzibilní orientace může někdy způsobit invertování CRectTracker::m_rect . To lze opravit voláním CRect::NormalizeRect.

Další informace naleznete v tématu Položky klienta kontejneru a OLE přetažení: Přizpůsobte přetažení.

Viz také

Trackery: Implementace trackerů v aplikaci OLE
Třída CRectTracker