RegisterDragDrop

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

RegisterDragDrop hwnd, pDropTarget

hwnd : [intptr] OLE ドラッグアンドドロップ操作のターゲットとなり得るウィンドウへのハンドル。
pDropTarget : [var] 指定されたウィンドウでドラッグアンドドロップ操作のターゲットとなるオブジェクト上の IDropTarget インターフェイスへのポインタ。このインターフェイスは、そのウィンドウの OLE ドラッグアンドドロップ情報を伝達するために使用される。

(プラグイン / モジュール : ole32.dll)

解説

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

[戻り値]
関数が成功した場合は S_OK を返す。その他に返される値は以下のとおり。
(以下省略)

[備考]
アプリケーションが OLE
ドラッグアンドドロップ操作中にドロップされたオブジェクトを受け入れることができる場合、RegisterDragDrop
関数を呼び出さなければならない。アプリケーションのウィンドウが潜在的なドロップターゲットとして利用可能になるとき(つまり、ウィンドウが画面上に遮られずに表示されているとき)、これを行う。RegisterDragDrop
関数を呼び出すアプリケーションスレッドは、メッセージをポンプしていなければならない。OLE
がメッセージ処理を必要とするスレッド上にウィンドウを作成するため、おそらく NULL の hWnd パラメータで GetMessage
関数を呼び出す必要がある。この要件が満たされない場合、ドロップターゲットとして登録されたウィンドウ上にオブジェクトをドラッグするアプリケーションは、ターゲットアプリケーションが閉じるまでハングする。RegisterDragDrop
関数は一度に 1
つのウィンドウしか登録しないので、ドロップされたオブジェクトを受け入れることができる各アプリケーションウィンドウについて呼び出す必要がある。OLE
ドラッグアンドドロップ操作中にマウスがターゲットウィンドウの遮られていない部分を通過するとき、DoDragDrop
関数は現在のウィンドウに対して指定された IDropTarget::DragOver
メソッドを呼び出す。あるウィンドウで実際にドロップ操作が行われたとき、DoDragDrop 関数は IDropTarget::Drop
を呼び出す。RegisterDragDrop 関数はまた IDropTarget ポインタに対して IUnknown::AddRef
メソッドも呼び出す。

サンプル逆引き (1)

sample_02_droptarget.hsp

情報

プラグイン / モジュールole32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ole32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ole32_gen2.hs