COleDropTarget クラス

ウィンドウと OLE ライブラリの間の通信機構を提供します。

構文

class COleDropTarget : public CCmdTarget

メンバー

パブリック コンストラクター

名前 説明
COleDropTarget::COleDropTarget COleDropTarget オブジェクトを構築します。

パブリック メソッド

名前 説明
COleDropTarget::OnDragEnter カーソルが最初にウィンドウに入ったときに呼び出されます。
COleDropTarget::OnDragLeave カーソルがウィンドウの外にドラッグされたときに呼び出されます。
COleDropTarget::OnDragOver カーソルがウィンドウの上にドラッグされたときに繰り返し呼び出されます。
COleDropTarget::OnDragScroll カーソルがウィンドウのスクロール領域にドラッグされているかどうかを判断するために呼び出されます。
COleDropTarget::OnDrop データがウィンドウ (既定のハンドラー) にドロップされたときに呼び出されます。
COleDropTarget::OnDropEx データがウィンドウ (初期ハンドラー) にドロップされたときに呼び出されます。
COleDropTarget::Register ウィンドウを有効なドロップ ターゲットとして登録します。
COleDropTarget::Revoke ウィンドウが有効なドロップ ターゲットでなくなったことを示します。

解説

このクラスのオブジェクトを作成すると、ウィンドウは OLE ドラッグ アンド ドロップ メカニズムを使用してデータを受け入れます。

ドロップ コマンドを受け入れるウィンドウを取得するには、まずクラスのオブジェクトを作成してから、目的CWndのオブジェクトへのポインターを唯一のCOleDropTargetパラメーターとして Register 関数を呼び出す必要があります。

OLE を使用したドラッグ アンド ドロップ操作の詳細については、OLE ドラッグ アンド ドロップに関する記事を参照してください。

継承階層

CObject

CCmdTarget

COleDropTarget

要件

ヘッダー: afxole.h

COleDropTarget::COleDropTarget

クラス COleDropTargetのオブジェクトを構築します。

COleDropTarget();

解説

Register を呼び出して、このオブジェクトをウィンドウに関連付けます。

COleDropTarget::OnDragEnter

カーソルが最初にウィンドウにドラッグされたときにフレームワークによって呼び出されます。

virtual DROPEFFECT OnDragEnter(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

パラメーター

pWnd
カーソルが入力されているウィンドウをポイントします。

pDataObject
削除できるデータを含むデータ オブジェクトを指します。

dwKeyState
修飾子キーの状態を格納します。 これは、MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MB (メガバイト)UTTON、MK_RBUTTONの任意の数の組み合わせです。

point
カーソルの現在の位置をクライアント座標で格納します。

戻り値

ポイント指定された位置でドロップが試行された場合に発生する効果。 次の 1 つ以上を指定できます。

  • DROPEFFECT_NONEドロップは許可されません。

  • DROPEFFECT_COPYコピー操作が実行されます。

  • DROPEFFECT_MOVE移動操作が実行されます。

  • DROPEFFECT_LINK削除されたデータから元のデータへのリンクが確立されます。

  • DROPEFFECT_SCROLLドラッグ スクロール操作が発生しようとしているか、ターゲットで発生しています。

解説

この関数をオーバーライドして、ウィンドウでドロップ操作を実行できるようにします。 既定の実装では CView::OnDragEnter が呼び出され、既定ではDROPEFFECT_NONEが返されます。

詳細については、Windows SDK の IDropTarget::D ragEnter に関する記事を参照してください

COleDropTarget::OnDragLeave

ドラッグ操作が有効な間にカーソルがウィンドウから離れると、フレームワークによって呼び出されます。

virtual void OnDragLeave(CWnd* pWnd);

パラメーター

pWnd
カーソルが離れるウィンドウをポイントします。

解説

ドラッグ操作が指定したウィンドウから離れたときに特別な動作が必要な場合は、この関数をオーバーライドします。 この関数の既定の実装では、CView::OnDragLeave が呼び出 されます

詳細については、Windows SDK の IDropTarget::D ragLeave に関する記事を参照してください

COleDropTarget::OnDragOver

ウィンドウの上にカーソルがドラッグされたときにフレームワークによって呼び出されます。

virtual DROPEFFECT OnDragOver(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

パラメーター

pWnd
カーソルがオーバーしているウィンドウをポイントします。

pDataObject
削除するデータを含むデータ オブジェクトをポイントします。

dwKeyState
修飾子キーの状態を格納します。 これは、MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MB (メガバイト)UTTON、MK_RBUTTONの任意の数の組み合わせです。

point
カーソルの現在の位置をクライアント座標で格納します。

戻り値

ポイント指定された位置でドロップが試行された場合に発生する効果。 次の 1 つ以上を指定できます。

  • DROPEFFECT_NONEドロップは許可されません。

  • DROPEFFECT_COPYコピー操作が実行されます。

  • DROPEFFECT_MOVE移動操作が実行されます。

  • DROPEFFECT_LINK削除されたデータから元のデータへのリンクが確立されます。

  • DROPEFFECT_SCROLL ドラッグ スクロール操作が発生しようとしているか、ターゲットで発生していることを示します。

解説

この関数は、ウィンドウでドロップ操作を実行できるようにオーバーライドする必要があります。 この関数の既定の実装では CView::OnDragOver が呼び出され、既定でDROPEFFECT_NONEが返されます。 この関数はドラッグ アンド ドロップ操作中に頻繁に呼び出されるため、可能な限り最適化する必要があります。

詳細については、Windows SDK の IDropTarget::D ragOver に関する記事を参照してください

DROPEFFECT COleContainerView::OnDragOver(COleDataObject* pDataObject,
   DWORD dwKeyState, CPoint point)
{
   UNREFERENCED_PARAMETER(pDataObject);
   UNREFERENCED_PARAMETER(point);

   DROPEFFECT de = DROPEFFECT_NONE;
   //Determine the type of operation
   if ((dwKeyState & MK_SHIFT) && (dwKeyState & MK_CONTROL))
      de = DROPEFFECT_LINK;
   else if (dwKeyState & MK_CONTROL)
      de = DROPEFFECT_COPY;
   else if (dwKeyState & MK_SHIFT)
      de = DROPEFFECT_MOVE;
   return de;
}

COleDropTarget::OnDragScroll

OnDragEnter または OnDragOver を呼び出して、ポイントがスクロール領域にあるかどうかを判断する前に、フレームワークによって呼び出されます。

virtual DROPEFFECT OnDragScroll(
    CWnd* pWnd,
    DWORD dwKeyState,
    CPoint point);

パラメーター

pWnd
カーソルが現在オーバーしているウィンドウをポイントします。

dwKeyState
修飾子キーの状態を格納します。 これは、MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MB (メガバイト)UTTON、MK_RBUTTONの任意の数の組み合わせです。

point
画面を基準にしたカーソルの位置をピクセル単位で格納します。

戻り値

ポイント指定された位置でドロップが試行された場合に発生する効果。 次の 1 つ以上を指定できます。

  • DROPEFFECT_NONEドロップは許可されません。

  • DROPEFFECT_COPYコピー操作が実行されます。

  • DROPEFFECT_MOVE移動操作が実行されます。

  • DROPEFFECT_LINK削除されたデータから元のデータへのリンクが確立されます。

  • DROPEFFECT_SCROLL ドラッグ スクロール操作が発生しようとしているか、ターゲットで発生していることを示します。

解説

このイベントに特別な動作を提供する場合は、この関数をオーバーライドします。 この関数の既定の実装では CView::OnDragScroll が呼び出 されます。CView::OnDragScroll は、DROPEFFECT_NONEを返し、カーソルがウィンドウの境界線内の既定のスクロール領域にドラッグされたときにウィンドウをスクロールします。

COleDropTarget::OnDrop

ドロップ操作が発生したときにフレームワークによって呼び出されます。

virtual BOOL OnDrop(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DROPEFFECT dropEffect,
    CPoint point);

パラメーター

pWnd
カーソルが現在オーバーしているウィンドウをポイントします。

pDataObject
削除するデータを含むデータ オブジェクトをポイントします。

dropEffect
ユーザーがドロップ操作に選択した効果。 次の 1 つ以上を指定できます。

  • DROPEFFECT_COPYコピー操作が実行されます。

  • DROPEFFECT_MOVE移動操作が実行されます。

  • DROPEFFECT_LINK削除されたデータから元のデータへのリンクが確立されます。

point
画面を基準にしたカーソルの位置をピクセル単位で格納します。

戻り値

ドロップが成功した場合は 0 以外。それ以外の場合は 0。

解説

フレームワークは最初に OnDropEx を呼び出します。 関数がドロップを OnDropEx 処理しない場合、フレームワークはこのメンバー関数 OnDropを呼び出します。 通常、アプリケーションはビュー クラスの OnDropEx をオーバーライドして、マウスボタンの右ドラッグ アンド ドロップを処理します。 通常、ビュー クラス OnDrop は、単純なドラッグ アンド ドロップを処理するために使用されます。

CView::OnDrop を呼び出す既定のCOleDropTarget::OnDrop実装。既定では、単に FAL Standard Edition を返します。

詳細については、Windows SDK の IDropTarget::D rop に関する記事を参照してください

COleDropTarget::OnDropEx

ドロップ操作が発生したときにフレームワークによって呼び出されます。

virtual DROPEFFECT OnDropEx(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DROPEFFECT dropDefault,
    DROPEFFECT dropList,
    CPoint point);

パラメーター

pWnd
カーソルが現在オーバーしているウィンドウをポイントします。

pDataObject
削除するデータを含むデータ オブジェクトをポイントします。

dropDefault
ユーザーが現在のキーの状態に基づいて既定のドロップ操作に選択した効果。 DROPEFFECT_NONEできます。 ドロップ効果については、「解説」セクションで説明します。

dropList
ドロップ ソースがサポートするドロップ効果の一覧。 ドロップ効果の値は、ビットごとの OR (|) 演算を使用して結合できます。 ドロップ効果については、「解説」セクションで説明します。

point
画面を基準にしたカーソルの位置をピクセル単位で格納します。

戻り値

ポイントで指定された位置でのドロップ試行の結果として発生したドロップ効果。 ドロップ効果については、「解説」セクションで説明します。

解説

フレームワークは、最初にこの関数を呼び出します。 ドロップが処理されない場合、フレームワークは OnDrop を呼び出します。 通常は、右マウス ボタンのドラッグ アンド ドロップをサポートするために、ビュー クラスの OnDropEx をオーバーライドします。 通常、ビュー クラス OnDrop は、単純なドラッグ アンド ドロップのサポートのケースを処理するために使用されます。

CView::OnDropEx の呼び出しの既定のCOleDropTarget::OnDropEx実装。 既定では、CView::OnDropEx は、OnDrop メンバー関数を呼び出す必要があることを示すダミー値を返します。

ドロップ効果は、ドロップ操作に関連付けられたアクションを表します。 次のドロップ効果の一覧を参照してください。

  • DROPEFFECT_NONEドロップは許可されません。

  • DROPEFFECT_COPYコピー操作が実行されます。

  • DROPEFFECT_MOVE移動操作が実行されます。

  • DROPEFFECT_LINK削除されたデータから元のデータへのリンクが確立されます。

  • DROPEFFECT_SCROLL ドラッグ スクロール操作が発生しようとしているか、ターゲットで発生していることを示します。

詳細については、Windows SDK の IDropTarget::D rop に関する記事を参照してください

COleDropTarget::Register

有効なドロップ ターゲットとして OLE DLL にウィンドウを登録するには、この関数を呼び出します。

BOOL Register(CWnd* pWnd);

パラメーター

pWnd
ドロップ ターゲットとして登録されるウィンドウをポイントします。

戻り値

登録が成功した場合は 0 以外。それ以外の場合は 0。

解説

ドロップ操作を受け入れるには、この関数を呼び出す必要があります。

詳細については、Windows SDK の RegisterDragDrop を参照してください

COleDropTarget::Revoke

Register を呼び出してドロップ ターゲットの一覧から削除することで、ドロップ ターゲットとして登録されているウィンドウを破棄する前に、この関数を呼び出します。

virtual void Revoke();

解説

この関数は、登録されたウィンドウの OnDestroy ハンドラーから自動的に呼び出されるため、通常、この関数を明示的に呼び出す必要はありません。

詳細については、Windows SDK の RevokeDragDrop を参照してください

関連項目

MFC サンプル HIERSVR
MFC サンプル OCLIENT
CCmdTarget クラス
階層図
COleDropSource クラス