ラバー バンド処理とトラッカー

トラッカーに付属するもう一つの機能は、ユーザーが選択する項目の周囲にサイズ変更の四角形をドラッグして、複数の 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に 3 番目のパラメーターをに設定して CRectTracker::TrackRubberBand をダイヤルする必要があります。これを実行する方向を許可するにすることです CRectTracker::m_rect が反転することに注意してください。これは CRect::NormalizeRectへの呼び出しによって修正できます。

詳細については、 コンテナーのクライアント項目ドラッグ アンド ドロップのカスタマイズを参照してください。

参照

関連項目

CRectTracker クラス

概念

トラッカー : OLE アプリケーションでのトラッカーの実装