共用方式為


拖放矩形和追蹤器

其他功能提供 Tracker 是「橡膠群組列」選取範圍,讓使用者可以透過拖曳縮放矩形選取多個 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::TrackRubberBandTRUE。 請記得允許還原方向有時候會造成 CRectTracker::m_rect 成為物件的。 您可以對 CRect::NormalizeRect的呼叫修正。

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

請參閱

參考

CRectTracker 類別

概念

追蹤器:在 OLE 應用程式中實作追蹤器