COleDropSource クラス

データをドロップ 先にドラッグできるようにします。

構文

class COleDropSource : public CCmdTarget

メンバー

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

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

パブリック メソッド

名前 説明
COleDropSource::GiveFeedback ドラッグ アンド ドロップ操作中にカーソルを変更します。
COleDropSource::OnBeginDrag ドラッグ アンド ドロップ操作中にマウス キャプチャを処理します。
COleDropSource::QueryContinueDrag ドラッグを続行するかどうかを確認します。

解説

COleDropTarget クラスは、ドラッグ アンド ドロップ操作の受信部分を処理します。 オブジェクトは COleDropSource 、ドラッグ操作が開始されるタイミングを決定し、ドラッグ操作中にフィードバックを提供し、ドラッグ操作がいつ終了するかを決定します。

オブジェクトを COleDropSource 使用するには、コンストラクターを呼び出すだけです。 これにより、マウス クリックなど、COleDataSource::D oDragDrop、COleClientItem::D oDragDrop、または COleServerItem::D oDragDrop 関数を使用してドラッグ操作を開始するイベントを決定するプロセスが簡略化されます。 これらの関数によってオブジェクトが COleDropSource 作成されます。 オーバーライド可能な関数の既定の動作を COleDropSource 変更できます。 これらのメンバー関数は、フレームワークによって適切な時間に呼び出されます。

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

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

継承階層

CObject

CCmdTarget

COleDropSource

要件

ヘッダー: afxole.h

COleDropSource::COleDropSource

COleDropSource オブジェクトを構築します。

COleDropSource();

COleDropSource::GiveFeedback

COleDropTarget::OnDragOver または COleDropTarget::D ragEnter を呼び出した後にフレームワークによって呼び出されます。

virtual SCODE GiveFeedback(DROPEFFECT dropEffect);

パラメーター

dropEffect
ユーザーに表示する効果。通常は、選択したデータでこの時点でドロップが発生した場合に何が起こるかを示します。 通常、これは CView::OnDragEnter または CView::OnDragOver への最新の呼び出しによって返される値です。 次の 1 つ以上を指定できます。

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

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

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

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

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

戻り値

ドラッグ中の場合は DRAGDROP_S_UStandard Edition DEFAULTCURSORS を返し、そうでない場合は NOERROR を返します。

解説

この時点でドロップが発生した場合の動作に関するフィードバックをユーザーに提供するには、この関数をオーバーライドします。 既定の実装では、OLE の既定のカーソルが使用されます。 OLE を使用したドラッグ アンド ドロップ操作の詳細については、OLE ドラッグ アンド ドロップに関する記事を参照してください。

詳細については、 Windows SDK の IDropSource::GiveFeedbackIDropTarget::D ragOver、IDropTarget ::D ragEnter を参照してください。

COleDropSource::OnBeginDrag

マウスの左ボタンを押すなど、ドラッグ操作を開始できるイベントが発生したときにフレームワークによって呼び出されます。

virtual BOOL OnBeginDrag(CWnd* pWnd);

パラメーター

pWnd
選択したデータを含むウィンドウをポイントします。

戻り値

ドラッグが許可されている場合は 0 以外、それ以外の場合は 0。

解説

ドラッグ プロセスの開始方法を変更する場合は、この関数をオーバーライドします。 既定の実装では、マウスをキャプチャし、ユーザーがマウスの左または右のボタンをクリックするか Esc キーを押すまでドラッグ モードのままで、その時点でマウスを離します。

COleDropSource::QueryContinueDrag

ドラッグが開始されると、ドラッグ操作が取り消されるか完了するまで、フレームワークによってこの関数が繰り返し呼び出されます。

virtual SCODE QueryContinueDrag(
    BOOL bEscapePressed,
    DWORD dwKeyState);

パラメーター

bEscapePressed
最後の呼び出し以降に ESC キーが押されたかどうかを示します COleDropSource::QueryContinueDrag

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

戻り値

esc キーまたは右ボタンを押すか、ドラッグを開始する前に左ボタンを上げた場合にDRAGDROP_S_CANCELします。 ドロップ操作を実行する必要があるかどうかをDRAGDROP_S_DROPします。 それ以外の場合はS_OK。

解説

ドラッグが取り消されるか、ドロップが発生するポイントを変更する場合は、この関数をオーバーライドします。

既定の実装では、次のようにドロップを開始するか、ドラッグをキャンセルします。 ESC キーまたはマウスの右ボタンを押すと、ドラッグ操作が取り消されます。 ドラッグの開始後にマウスの左ボタンが上がると、ドロップ操作が開始されます。 それ以外の場合は、S_OKが返され、それ以上の操作は実行されません。

この関数は頻繁に呼び出されるため、可能な限り最適化する必要があります。

関連項目

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