Condividi tramite


Composizione elastica e tracker

Un'altra funzionalità fornita con i tracker è la selezione di “gomma-banda„, che consente a un utente agli elementi OLE selezionare più trascinando un rettangolo di ridimensionamento attorno agli elementi da selezionare.Quando l'utente rilascia il pulsante sinistro del mouse, gli elementi all'interno dell'area selezionata dall'utente vengono selezionati e possono essere modificati dall'utente.Ad esempio, l'utente può trascinare la selezione in un'altra applicazione contenitore.

Implementare questa funzionalità è necessaria il codice del componente aggiuntivo nella funzione di gestione di WM_LBUTTONDOWN dell'applicazione.

Nell'esempio di codice implementa la selezione di gomma-banda e funzionalità aggiuntive.

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

Se si desidera consentire l'orientamento reversibile tracker durante la composizione elastica, è necessario chiamare CRectTracker::TrackRubberBand con il terzo parametro impostato su TRUE.Tenere presente che consentono l'orientamento reversibile talvolta modo CRectTracker::m_rect a essere invertito.Questa operazione può essere eseguita correttamente da una chiamata a CRect::NormalizeRect.

Per ulteriori informazioni, vedere Elementi client del contenitore e Personalizzare trascinamento della selezione.

Vedere anche

Riferimenti

Classe CRectTracker

Concetti

Tracker: Implementare i tracker nell'applicazione OLE