IDropTarget::D ragOver メソッド (oleidl.h)

ターゲット フィードバックをユーザーに提供し、ドロップの効果を DoDragDrop 関数に伝達して、ドロップの効果をソースに伝達できるようにします。

構文

HRESULT DragOver(
  [in]      DWORD  grfKeyState,
  [in]      POINTL pt,
  [in, out] DWORD  *pdwEffect
);

パラメーター

[in] grfKeyState

キーボードのキーボード修飾子キーの現在の状態。 有効な値には、フラグ MK_CONTROL、MK_SHIFT、MK_ALT、MK_BUTTON、MK_LBUTTON、MK_MBUTTON、MK_RBUTTONのいずれかを組み合わせて指定できます。

[in] pt

画面座標内の現在のカーソル座標を含む POINTL 構造体。

[in, out] pdwEffect

入力時に、DoDragDrop 関数の pdwEffect パラメーターの値へのポインター。 戻り時には、ドロップ操作の結果を示す DROPEFFECT フラグのいずれかを含める必要があります。

戻り値

このメソッドは、成功したS_OKを返します。 その他の使用可能な値は次のとおりです。

リターン コード 説明
E_UNEXPECTED
予期しないエラーが発生しました。
E_INVALIDARG
pdwEffect 値が無効です。
E_OUTOFMEMORY
この操作で使用できるメモリが不足していました。

注釈

DragOver は直接呼び出しません。 DoDragDrop 関数は、ユーザーが特定のターゲット ウィンドウにマウスを移動するたびに、このメソッドを呼び出します。 DoDragDrop は、ドラッグ アンド ドロップ操作が取り消された場合、ユーザーがターゲット ウィンドウからマウスをドラッグした場合、またはドロップが完了した場合にループを終了します。

IDropTarget::D ragOver の実装では、IDropTarget::D ragEnter と同様の機能を提供する必要があります。 データ オブジェクトの形式とメディアを定義する FORMATETC と修飾子キーの状態を調べることで、ターゲットに対するデータの削除の影響を判断する必要があります。 マウスの位置は、ドロップの効果を決定する際に役割を果たすこともできます。 次の修飾子キーは、ドロップの結果に影響します。

キーの組み合わせ User-Visible フィードバック ドロップ効果
CTRL + SHIFT = DROPEFFECT_LINK
CTRL + DROPEFFECT_COPY
キーまたは Shift キーなし なし DROPEFFECT_MOVE
 

pdwEffectDoDragDrop を使用して、ドロップ バックの効果をソースに伝達します。 その後、 DoDragDrop 関数は IDropSource::GiveFeedback を呼び出して、ソース アプリケーションがユーザーに適切な視覚的フィードバックを表示できるようにします。

IDropTarget::D ragOver へのエントリでは、pdwEffect パラメーターを DoDragDrop 関数の pdwOkEffect パラメーターに渡される許可された効果に設定する必要があります。 IDropTarget::D ragOver メソッドは、これらの効果のいずれかを選択したり、ドロップを無効にしたりできる必要があります。

戻り時に、 pdwEffect は DROPEFFECT フラグのいずれかに設定されます。 この値は、DoDragDroppdwEffect パラメーターに渡されます。 適切な値は、ドラッグされたデータをターゲットにコピー DROPEFFECT_COPY、ソース データへのリンクを作成DROPEFFECT_LINK、またはドラッグされたデータをソース アプリケーションからターゲットに永続的に移動できるようにするためのDROPEFFECT_MOVEです。

ターゲット ウィンドウで適切な視覚的フィードバックを提供することもできます。 IDropTarget::D ragOver の以前の呼び出しまたは最初の IDropTarget::D ragEnter からのターゲット フィードバックが既に表示されている場合があります。 このフィードバックが適切でなくなった場合は、削除する必要があります。

効率上の理由から、データ オブジェクトは IDropTarget::D ragOver では渡されません。 IDropTarget::D ragEnter の最新の呼び出しで渡されたデータ オブジェクトを使用できます。

IDropTarget::D ragOver の操作が完了すると、DoDragDrop 関数は IDropSource::GiveFeedback を呼び出して、ソース アプリケーションがユーザーに適切な視覚的フィードバックを表示できるようにします。

実装者へのメモ

この関数は DoDragDrop ループ中に頻繁に呼び出されるため、 DragOver メソッドの実装を可能な限り最適化するのが理にかなっています。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー oleidl.h

こちらもご覧ください

Dodragdrop

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop