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 を使用して COM を初期化する代わりに、CoInitialize または CoInitializeEx を使用する場合、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 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー ole2.h
ライブラリ Ole32.lib
DLL Ole32.dll

関連項目

RevokeDragDrop の