Partilhar via


Elásticos e controladores

Outro recurso fornecido com perseguidores é a seleção de”, “extensível que permite que um usuário selecionar vários itens com OLE DB arrastando um retângulo de dimensionamento em torno dos itens a serem selecionados. Quando o usuário libera o botão esquerdo do mouse, os itens dentro da região selecionada pelo usuário são selecionados e podem ser manipulados pelo usuário. Por exemplo, o usuário pode arrastar a seleção em outro aplicativo do contêiner.

Implementar esse recurso requer um código adicional na função de manipulador de WM_LBUTTONDOWN do seu aplicativo.

O exemplo de código a seguir implementa a seleção de extensível e recursos adicionais.

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 você quiser permitir a orientação reversível de controlador durante a borracha- borda, você deve chamar CRectTracker::TrackRubberBand com o terceiro parâmetro definido como Verdadeiro. Lembre-se de que permitir a orientação reversível fará com que às vezes CRectTracker::m_rect se torne invertida. Isso pode ser corrigido por uma chamada a CRect::NormalizeRect.

Para obter mais informações, consulte Itens de cliente do contêiner e Personalizando ao arrastar e soltar.

Consulte também

Referência

Classe CRectTracker

Conceitos

Controladores: implementando controladores no aplicativo OLE