Sdílet prostřednictvím


Pružné čáry a snímače

Další funkce, které jsou součástí trackers je výběr "perem", který umožňuje uživatelům vybrat více položek OLE pomocí přetažení velikosti obdélníku kolem položek, které chcete vybrat.Když uživatel uvolní levé tlačítko myši, v oblasti uživatelem vybrané položky jsou vybrány a uživatel pracovat.Uživatel může například přetáhněte výběr do jiné aplikace kontejneru.

Implementace této funkce vyžaduje některé dodatečné kód ve vaší aplikaci WM_LBUTTONDOWN funkce obslužné rutiny.

Následující příklad kódu implementuje výběr perem 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 vratné orientace nástroje Sledování průběhu pružných, měli byste zavolat CRectTracker::TrackRubberBand s třetím parametrem nastaveným na TRUE.Mějte na paměti, že umožňuje reverzibilního orientace někdy způsobí, že CRectTracker::m_rect na stát obrácený.Tento problém lze vyřešit tak, že volání CRect::NormalizeRect.

Další informace naleznete v tématu Kontejner položky klienta a vlastní operace přetažení.

Viz také

Referenční dokumentace

Třída CRectTracker

Koncepty

Snímače: Implementace snímačů ve vašich aplikacích OLE