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を返します。 その他の使用可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
予期しないエラーが発生しました。 |
|
pdwEffect 値が無効です。 |
|
この操作で使用できるメモリが不足していました。 |
注釈
DragOver は直接呼び出しません。 DoDragDrop 関数は、ユーザーが特定のターゲット ウィンドウにマウスを移動するたびに、このメソッドを呼び出します。 DoDragDrop は、ドラッグ アンド ドロップ操作が取り消された場合、ユーザーがターゲット ウィンドウからマウスをドラッグした場合、またはドロップが完了した場合にループを終了します。
IDropTarget::D ragOver の実装では、IDropTarget::D ragEnter と同様の機能を提供する必要があります。 データ オブジェクトの形式とメディアを定義する FORMATETC と修飾子キーの状態を調べることで、ターゲットに対するデータの削除の影響を判断する必要があります。 マウスの位置は、ドロップの効果を決定する際に役割を果たすこともできます。 次の修飾子キーは、ドロップの結果に影響します。
キーの組み合わせ | User-Visible フィードバック | ドロップ効果 |
---|---|---|
CTRL + SHIFT | = | DROPEFFECT_LINK |
CTRL | + | DROPEFFECT_COPY |
キーまたは Shift キーなし | なし | DROPEFFECT_MOVE |
pdwEffect の DoDragDrop を使用して、ドロップ バックの効果をソースに伝達します。 その後、 DoDragDrop 関数は IDropSource::GiveFeedback を呼び出して、ソース アプリケーションがユーザーに適切な視覚的フィードバックを表示できるようにします。
IDropTarget::D ragOver へのエントリでは、pdwEffect パラメーターを DoDragDrop 関数の pdwOkEffect パラメーターに渡される許可された効果に設定する必要があります。 IDropTarget::D ragOver メソッドは、これらの効果のいずれかを選択したり、ドロップを無効にしたりできる必要があります。
戻り時に、 pdwEffect は DROPEFFECT フラグのいずれかに設定されます。 この値は、DoDragDrop の pdwEffect パラメーターに渡されます。 適切な値は、ドラッグされたデータをターゲットにコピー 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 |