2011-06-21 12 views
1

Microsoft Word用のアドイン(C#を使用)を作成していて、テキスト/イメージなどを任意のソースからドラッグしてWordにドロップしたときにいくつかの機能を起動したいと考えています。だから基本的に私はWordでドロップイベントをトラップしたい。しかし、私はこれを助けるWord APIを見つけることができません。これで助けてもらえますか?WordでDrag/Dropイベントをトラップする方法は?

答えて

3

このような獣は存在しません。 DocumentChangeイベントを監視し、変更されたもの( "Selection"の現在の場所に配置される)を監視しようとすると、最高の(簡単な)アプローチが可能です。

メインワードウィンドウをサブクラス化し、ドラッグ/ドロップメッセージが交換されているかどうかを監視し、必要に応じてそれらを傍受することが非常に厄介な方法です。

+0

私はこれらのオプションを調べようとします。ありがとう! – Mayank

+0

説明したようにドラッグ&ドロップメッセージを傍受することができません。ウィンドウにマウス・フックを設定しましたが、ドラッグ・ドロップのイベントはありません。あなたは助けてもらえますか? – Mayank

+0

DocumentChangeのみ "新しい文書が作成されたとき、既存の文書が開かれたとき、または別の文書がアクティブ文書になったときに発生します。 – Chris

0

SelectionChangeイベントがこのために使用されることがあります。場合によっては、選択内容にドロップされたコンテンツが含まれているとは限りません。例えば。イメージをドキュメントにドロップするとイメージは選択されません。

0

より良い代替方法は、Wordウィンドウの上にオーバーレイする透過ウィンドウを使用することです。このウィンドウは、ドラッグプロセスが開始され、ドキュメントウィンドウの上に置かれたときに開始されます。 Wordの代わりにドロップ操作がこのウィンドウで受信されるので、何が入ってきたのか、どの場所にドロップされたのかが正確にわかります。これらの位置座標を対応するドキュメントの位置に変換して(RangeFromPoint()メソッドをWindowクラスとします)、削除されたデータで必要な処理を行います。この後、透明なウィンドウを隠すだけですべてが正常に戻ります。

ソースコードとこのアプローチの完全な実装は、this excellent MSDN articleで利用できます。

関連する問題