ウィンドウ外へのD&Dの方法

[戻る]
初心者 2006/06/20(火) 09:29:19
いつも楽しく拝見させていただいております。

現在簡単なエクスプローラ(ファイラ)を作成しようと思い、プログラム構成や知識不足でネックに
なる部分をいろいろ考えています。

そこで浮上した問題の一つが、ウィンドウ外へのD&Dの方法です。
一般的な手法があればいいのですが・・・・

一応ウィンドウ内でのD&Dは嗜んだことがあり、
SetCapterを行い、カーソルがウィンドウ外で出たらカーソルを変える所までは出来るのですが、問
題はその後です。

自分で考えた感じでは、
カーソル位置のウィンドウ(またはデスクトップ)をどうにか取得し、そのウィンドウがD&Dを許
可していない場合、D&D不可アイコンをカーソルにして、D&Dを許可していたら左クリックを離
した時になにかしらの処理をする(SendMessage?)
という感じです。

聞きたいことがはっきりしませんが、一応がんばってまとめてみました。

・ウィンドウ外へのD&Dの詳しい手順(一般的な方法があればそれを)。
もしくは、
・カーソル位置のウィンドウの取得方法。
・ドロップしたウィンドウにD&Dのメッセージを送る方法。

です。
よろしくお願いします。

初心者 2006/06/20(火) 10:23:04
一応開発環境書いた方がいいですかね?
WindowsXP
VS.net 2005 Pro(VC8)
Win32
MFC:使ってない

dairygoods 2006/06/20(火) 15:11:34
OLE Drag&Drop を使うのが比較的簡単だと思います。

http://msdn.microsoft.com/library/en-us/com/html/d4a57956-37ba-44ca-8efc-
bf617ad5e77b.asp

この機能を使うと、カーソル位置判定、メッセージ送信などの
ややこしい部分はシステムが全部やってくれます。


主要クラス IDropTarget/IDropSource/IDataObject 等を
キーワードにして情報を探してみてください。

MFC のソースを見てみるのもよいかも知れません。

初心者 2006/06/21(水) 18:08:13
こんなのもみつけました。
http://forums.belution.com/ja/vc/000/220/92s.shtml

dairygoodsさん回答ありがとうございます。

なかなか難しいですね。

初心者 2006/06/21(水) 22:09:33
[[解決]]
解決してませんが、解決しそうなので解決にチェックを入れておきます。

とりあえず勉強は後回しにして、
このサイトのソースコピペと微修正いけるかも
http://hp.vector.co.jp/authors/VA016117/oledragdrop1.html

ご協力いただいたみなさま(一人だが)ありがとうございました。

古いスレッドには追加発言できません。