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

ドロップを受け入れられるかどうかを示し、その場合はドロップの効果を示します。

構文

HRESULT DragEnter(
  [in]      IDataObject *pDataObj,
  [in]      DWORD       grfKeyState,
  [in]      POINTL      pt,
  [in, out] DWORD       *pdwEffect
);

パラメーター

[in] pDataObj

データ オブジェクトの IDataObject インターフェイスへのポインター。 このデータ オブジェクトには、ドラッグ アンド ドロップ操作で転送されるデータが含まれます。 ドロップが発生した場合、このデータ オブジェクトはターゲットに組み込まれます。

[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 パラメーターは入力時に NULL です
E_OUTOFMEMORY
この操作で使用できるメモリが不足していました。

注釈

DragEnter は直接呼び出しません。代わりに、DoDragDrop 関数はそれを呼び出して、ユーザーが最初にドロップ ターゲットの登録済みウィンドウにマウスをドラッグした場合のドロップの効果を判断します。

DragEnter を実装するには、次の 3 つのことを確認して、ターゲットがソース データ オブジェクト内のデータを使用できるかどうかを判断する必要があります。

  • データ オブジェクトで指定された形式とメディア
  • pdwEffect の入力値
  • 修飾子キーの状態
形式とメディアをチェックするには、pDataObject パラメーターで渡された IDataObject ポインターを使用して IDataObject::EnumFormatEtc を呼び出し、ソース データ オブジェクトがサポートする FORMATETC 構造体を列挙できるようにします。 次 に、IDataObject::QueryGetData を呼び出して、データ オブジェクトに指定された形式とメディアを調べることで、データ オブジェクトがターゲットにデータをレンダリングできるかどうかを判断します。

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

次の修飾子キーは、ドロップの結果に影響します。

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

戻り値の場合、メソッドは効果 (DROPEFFECT フラグの 1 つ) を pdwEffect パラメーターに書き込む必要があります。 その後、DoDragDrop はこのパラメーターを受け取り、 pdwEffect パラメーターに書き込みます。 pdwEffect パラメーターで DoDragDrop を使用して、ドロップ バックの効果をソースに伝達します。 次に、DoDragDrop 関数は IDropSource::GiveFeedback を呼び出して、ソース アプリケーションがターゲット ウィンドウを通じてユーザーに適切な視覚的フィードバックを表示できるようにします。

要件

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

こちらもご覧ください

DragEnter

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop