Перетащите и работайте в WPF, который уже работает в Windows Forms - PullRequest
0 голосов
/ 28 августа 2009

Я пытаюсь использовать эту функцию из COM API, которая позволяет окну получать капли (как в drag & dop) из другого приложения.

Это довольно просто в Windows Forms и работает:

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);
}

Последние две строки в основном идентичны, но они не будут работать в WPF. Пока

window.AllowDrop = true;

заставит его выглядеть так, как если бы он принял удаление, событие удаления этого COM API не вызывается.

Я что-то упустил или кто-то может помочь?

1 Ответ

0 голосов
/ 04 сентября 2009

Это правильный ответ Павла Минаева (который он разместил в качестве комментария к вопросу):

Вы ничего не пропускаете в WPF сторона вещей. Скорее всего проблема с RegisterDropWindow.

...