Как установить окно Win32 как владельца окна WPF? - PullRequest
15 голосов
/ 08 апреля 2010

Я хочу использовать окна WPF в устаревшем приложении win32.Я хотел бы вести себя так же, как окно WPF, всегда отображаемое поверх окна win32.

Для этого я бы хотел установить для владельца окна WPF окна win32., но я понятия не имел, как этого добиться.

Любая помощь здесь?

Поскольку ответ скрыт за какой-то ссылкой, здесь код, который добился цели:

System::Windows::Interop::WindowInteropHelper^ helper = gcnew System::Windows::Interop::WindowInteropHelper(myWpfChildWindow);
helper->Owner = (System::IntPtr)myMainWindowHWND;

Ответы [ 2 ]

14 голосов
/ 08 апреля 2010

В этой статье показано, как получить дескрипторы для обоих, а также как сделать окно WPF прозрачным наложением для окна win32.

http://blogs.microsoft.co.il/blogs/tamir/archive/2007/04/11/Transparent-WPF-control-over-unmanaged-window-handle.aspx

Эта статья использует WindowInteropHelper для выполнения аналогичных функций.

http://blogs.msdn.com/wpfsdk/archive/2007/04/03/centering-wpf-windows-with-wpf-and-non-wpf-owner-windows.aspx

Страница MSDN в WindowInteropHelper:

http://msdn.microsoft.com/en-us/library/system.windows.interop.windowinterophelper.aspx

Надеюсь, это поможет, Ed

1 голос
/ 08 апреля 2010

Как насчет SetParent()? Я знаю, что работает, когда делает окно WPF дочерним элементом MDI формы Windows.

...