다음을 통해 공유


고무 밴드 및 추적기

추적기에 제공되는 또 다른 기능은 "고무 밴드" 선택 기능입니다. 이 기능을 통해 사용자는 선택할 항목 주위의 크기 조정 직사각형을 끌어서 여러 OLE 항목을 선택할 수 있습니다. 사용자가 왼쪽 마우스 단추를 놓으면 사용자가 선택한 영역 내에 있는 항목이 선택되고 사용자가 조작할 수 있는 상태가 됩니다. 예를 들어 사용자가 선택한 항목을 다른 컨테이너 애플리케이션으로 끌어갈 수 있습니다.

이 기능을 구현하려면 애플리케이션의 WM_LBUTTONDOWN 처리기 함수에 몇 가지 추가 코드가 필요합니다.

다음 코드 샘플은 고무 밴드 선택 및 추가 기능을 구현합니다.

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

고무 밴딩 중에 트래커의 가역 방향을 허용하려면 세 번째 매개 변수가 TRUE로 설정된 CRectTracker::TrackRubberBand호출해야 합니다. 가역 방향을 허용하면 CRectTracker ::m_rect 반전될 수 있습니다. CRect::NormalizeRect를 호출하여 수정할 수 있습니다.

자세한 내용은 컨테이너 클라이언트 항목OLE 끌어서 놓기: 끌어서 놓기 사용자 지정을 참조하세요.

참고 항목

추적기: OLE 애플리케이션에서 추적기 구현
CRectTracker 클래스