RegisterDragDrop 関数 (ole2.h)

指定したウィンドウを OLE ドラッグ アンド ドロップ操作のターゲットとして登録し、ドロップ操作に使用する IDropTarget インスタンスを指定します。

構文

HRESULT RegisterDragDrop(
  [in] HWND         hwnd,
  [in] LPDROPTARGET pDropTarget
);

パラメーター

[in] hwnd

OLE ドラッグ アンド ドロップ操作のターゲットとして使用できるウィンドウを処理します。

[in] pDropTarget

指定したウィンドウでのドラッグ アンド ドロップ操作のターゲットとなるオブジェクトの IDropTarget インターフェイスへのポインター。 このインターフェイスは、そのウィンドウの OLE ドラッグ アンド ドロップ情報を通信するために使用されます。

戻り値

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

リターン コード 説明
DRAGDROP_E_INVALIDHWND
hwnd パラメーターで返されるハンドルが無効です。
DRAGDROP_E_ALREADYREGISTERED
指定されたウィンドウは既にドロップ ターゲットとして登録されています。
E_OUTOFMEMORY
操作のメモリが不足しています。
 
メモOLEInitialize ではなく CoInitialize または CoInitializeEx を使用して COM を初期化すると、RegisterDragDrop は常にE_OUTOFMEMORY エラーを返します。
 

注釈

OLE ドラッグ アンド ドロップ操作中にアプリケーションでドロップされたオブジェクトを受け入れる場合は、 RegisterDragDrop 関数を呼び出す必要があります。 アプリケーション ウィンドウの 1 つが潜在的なドロップ ターゲットとして使用できる場合は常にこれを行います。つまり、ウィンドウが画面にセキュリティで保護されていないように見える場合です。

RegisterDragDrop 関数を呼び出すアプリケーション スレッドは、おそらく NULLhWnd パラメーターを使用して GetMessage 関数を呼び出すことによって、メッセージをポンピングする必要があります。OLE は、処理されたメッセージを必要とするウィンドウをスレッドに作成するためです。 この要件が満たされない場合、ドロップ ターゲットとして登録されているウィンドウの上にオブジェクトをドラッグするアプリケーションは、ターゲット アプリケーションが閉じるまでハングします。

RegisterDragDrop 関数は一度に 1 つのウィンドウのみを登録するため、ドロップされたオブジェクトを受け入れられるアプリケーション ウィンドウごとに呼び出す必要があります。

OLE のドラッグ アンド ドロップ操作中にターゲット ウィンドウのセキュリティで保護されていない部分をマウスが通過すると、 DoDragDrop 関数は現在のウィンドウに対して指定された IDropTarget::D ragOver メソッドを呼び出します。 特定のウィンドウでドロップ操作が実際に発生すると、 DoDragDrop 関数は IDropTarget::D rop を呼び出します。

RegisterDragDrop 関数は、IDropTarget ポインターで IUnknown::AddRef メソッドも呼び出します。

要件

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

こちらもご覧ください

RevokeDragDrop