2009-08-27 23 views
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のドロップイベントは発生しません。

私に何かが不足している、または誰かが助けることができますか?

+0

なぜ特殊なCOM機能が必要なのでしょうか?あなたは 'AllowDrop'とそれに関連するWPF DnDイベントで全てのDnDシナリオを扱うことができます。 –

+0

また、正確に 'RegisterDropWindow'が実際に何をしているのかは不明です。これまでのところあなたのコードには何も問題はありませんが、「RegisterDropWindow」コードは何とかWinForms固有のものであるか、少なくともWPFに優しいものではないかもしれません。 –

+0

RegisterDropWindowを使用すると、ウィンドウ上でドラッグアンドドロップが可能になります。私はCOM APIからのドロップイベントに応答する必要があるので、私はWPFのドラッグ&ドロップイベントを使用することはできません。 WinForms固有のものではないことを願っています。そのため、私は何か間違っているかどうかを知りたいのです。 –

答えて

0

はこれが正しかった(彼は質問に対するコメントとして掲載)パベルMinaevの答えです:

あなたは物事のWPF 側には何も欠けていません。ほとんどの場合、 問題はRegisterDropWindowで発生します。

関連する問題