Как установить окно Win32 как владельца окна WPF?
Я хочу использовать окна WPF в устаревшем приложении win32.
Я хотел бы вести их так же, как окно WPF, всегда отображаемое поверх окна win32.
Для этого я хотел бы установить владельца окна WPF в окна win32, но я понятия не имел, как этого добиться.
Любая помощь здесь?
Так как ответ скрыт за некоторой ссылкой, вот код, который сделал трюк:
System::Windows::Interop::WindowInteropHelper^ helper = gcnew System::Windows::Interop::WindowInteropHelper(myWpfChildWindow);
helper->Owner = (System::IntPtr)myMainWindowHWND;
Ответы
Ответ 1
В этой статье показано, как получить дескрипторы как для обоих, так и для того, чтобы сделать окно 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
Ответ 2
Как насчет SetParent()
? Я знаю, что работает, создавая окно WPF для ребенка MDI формы Windows.