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í.