共用方式為


橡皮框,並追蹤者

追蹤者所提供的另一個功能是"拖"選項,它可讓使用者拖曳選取的項目周圍的縮放矩形來選取多個 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);
      }
   }
}

如果您想要允許的追蹤器] 可還原的方向在定點,您應該呼叫 CRectTracker::TrackRubberBand 的第三個參數設定為 ,則為 TRUE。 請記住允許可還原的方向將有時候會造成 CRectTracker::m_rect ,成為反轉。 要解決此問題由呼叫 CRect::NormalizeRect

如需詳細資訊,請參閱容器用戶端項目自訂拖放

請參閱

參考

CRectTracker 類別

概念

追蹤者: OLE 應用程式中實作追蹤者