0
この機能をCOM APIから使用しようとしています。このアプリケーションは、別のアプリケーションからドラッグを受け入れることができます(ドラッグ& dop)。Windowsフォームですでに動作するWPFでドラッグ&ドロップを取得します
これは、Windowsフォームで非常に簡単ですし、作品:
public void EnableDropSupport(System.Windows.Forms.Form form)
{
IntPtr hwnd = form.Handle;
_comAPI.RegisterDropWindow((int)hwnd);
}
しかし、私はそれが動作しないと、私はその理由を理解していないWPFウィンドウを持っています。私は以下を試しました:
public void EnableDropSupport(System.Windows.Window window)
{
window.AllowDrop = true;
WindowInteropHelper windowInteropHelper = new WindowInteropHelper(window);
IntPtr hwnd = windowInteropHelper.Handle;
_comAPI.RegisterDropWindow((int)hwnd);
}
最後の2行は基本的に同じですが、WPFではうまくいきません。 while
window.AllowDrop = true;
は、ドロップを受け入れるかのように表示されます。そのCOM APIのドロップイベントは発生しません。
私に何かが不足している、または誰かが助けることができますか?
なぜ特殊なCOM機能が必要なのでしょうか?あなたは 'AllowDrop'とそれに関連するWPF DnDイベントで全てのDnDシナリオを扱うことができます。 –
また、正確に 'RegisterDropWindow'が実際に何をしているのかは不明です。これまでのところあなたのコードには何も問題はありませんが、「RegisterDropWindow」コードは何とかWinForms固有のものであるか、少なくともWPFに優しいものではないかもしれません。 –
RegisterDropWindowを使用すると、ウィンドウ上でドラッグアンドドロップが可能になります。私はCOM APIからのドロップイベントに応答する必要があるので、私はWPFのドラッグ&ドロップイベントを使用することはできません。 WinForms固有のものではないことを願っています。そのため、私は何か間違っているかどうかを知りたいのです。 –