DragAcceptFilesを使ってListViewでエクスプローラからの
ドラッグ&ドロップを受け付けるようにしています。
このドラッグ中に、マウスカーソルの下にあるリスト項目を
DropTargetに設定することはできるのでしょうか?
リスト内に入ってもMouseMoveイベント等が起こらないので
判別するタイミングが分からないのです。
>DropTargetに設定することはできるのでしょうか?
これの意味をもう少し詳しく説明してください。
>これの意味をもう少し詳しく説明してください。
「ドロップ先として選択された状態で表示されるかどうか」という意味です。
DragAcceptFilesAPIを使って、エクスプローラからドラッグ&ドロップを行うには、以下のようにします。
Private
Procedure DropFiles(var Msg:TWMDROPFILES);Message WM_DROPFILES;
どこかのタイミングで、DragAcceptFiles(Form1.Handle, True);
として、
Procedure TForm1.DropFiles(var Msg:TWMDROPFILES);
でDragQueryfileAPIを使って、ドロップの処理を記述します。
APIを使っての処理ですから、MouseMoveイベントではなく、上記のようにします。
>リスト内に入ってもMouseMoveイベント等が起こらないので
>判別するタイミングが分からないのです。
DragQueryPoint でドロップされたマウス座標が取得できます。
> DragQueryPoint でドロップされたマウス座標が取得できます。
そうですけど、質問は
> このドラッグ中に、マウスカーソルの下にあるリスト項目を
です。エクスプローラにマウスキャプチャーされているらしくて、簡単じゃなさそう
すみません。質問の内容をよく理解していませんでした。
IDropTargetインターフェイスを実装すれば実現できそうです。
詳しくはネットで調べてみて下さい。
Drag and Drop Component SuiteのDropFileTargetを使うことで
希望の機能が実装できそうです。
ありがとうございました。
ツイート | ![]() |