Pružné čáry a snímač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ého pruhování, měli byste volat CRectTracker::TrackRubberBand s třetí parametr nastavenou na HODNOTU TRUE. Nezapomeňte, že povolení reverzibilní orientace někdy způsobí , že se CRectTracker::m_rect invertuje. 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ůsobení přetažení.
Viz také
Snímače: Implementace snímačů ve vašich aplikacích OLE
CRectTracker – třída