Compartir a través de


Efecto de banda elástica y seguimiento

Otra característica proporcionada con los rastreadores es la selección de “caucho- banda”, que permite a un usuario a varios elementos seleccionar OLE arrastrando un rectángulo de tamaño alrededor de los elementos que se seleccionen. Cuando el usuario suelta el botón primario, elementos dentro de la región seleccionada por el usuario se selecciona y pueden ser manipulados por el usuario. Por ejemplo, el usuario puede arrastrar la selección en otra aplicación contenedora.

Implementar esta característica requiere algún código adicional en la función de controlador de WM_LBUTTONDOWN de la aplicación.

El ejemplo de código siguiente implementa la selección de la caucho-banda y características adicionales.

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

Si desea permitir la guía reversible de seguimiento durante el efecto de banda elástica, debe llamar a CRectTracker::TrackRubberBand con el tercer parámetro establecido en VERDADERO. Recuerde que permitir la guía reversible hará a veces CRectTracker::m_rect para invertirse. Esto se puede corregir por una llamada a CRect::NormalizeRect.

Para obtener más información, vea Elementos del contenedor y Personalizar arrastrar y colocar.

Vea también

Referencia

CRectTracker (Clase)

Conceptos

Seguimiento: Implementar el seguimiento en la aplicación OLE