Поделиться через


Резин- Помощью Диапазонов и отслежыватели

Другая функция, предоставляемая с отслежывателями выделение «резин-полосы», которое позволяет пользователю выбирать несколько элементов 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 с третьим параметром в Истина.Следует помнить, что разрешения реверзибельная ориентация иногда будет приводить к CRectTracker::m_rect стать обращенным.Это может быть исправлена вызовом CRect::NormalizeRect.

Дополнительные сведения см. в разделе Клиентские элементы контейнера и Настраивать перетаскивание.

См. также

Ссылки

Класс CRectTracker

Основные понятия

Отслежыватели: Реализация отслежыватели в вашем приложении OLE