如何将Win32窗口设置为WPF窗口的所有者?
问题描述:
我想在传统的win32应用程序中使用WPF窗口。 我想以类似的方式表现它们,比如WPF窗口总是显示在win32窗口之上。如何将Win32窗口设置为WPF窗口的所有者?
为此,我想将WPF窗口的所有者设置为win32窗口,但我不知道如何实现此目的。
这里有什么帮助吗?
由于答案背后的一些链接,这里隐藏该诀窍代码:
System::Windows::Interop::WindowInteropHelper^ helper = gcnew System::Windows::Interop::WindowInteropHelper(myWpfChildWindow);
helper->Owner = (System::IntPtr)myMainWindowHWND;
答
本文将展示如何获取这两个句柄以及如何使WPF窗口变为透明的win32窗口覆盖图。
本文使用WindowInteropHelper来实现类似的功能。
上WindowInteropHelper MSDN页:
http://msdn.microsoft.com/en-us/library/system.windows.interop.windowinterophelper.aspx
希望帮助, 埃德
答
如何SetParent()
?我知道在将WPF窗口设置为Windows窗体的MDI子项时可行。
+3
我的WPF窗口没有任何功能的setparent()。 – Sam 2010-04-08 13:27:34
是的,第二篇文章诀窍,简称以下几行: System :: Windows :: Interop :: WindowInteropHelper^helper = gcnew System :: Windows :: Interop :: WindowInteropHelper(myWpfChildWindow); helper-> Owner =(System :: IntPtr)myMainWindowHWND; – Sam 2010-04-08 13:35:59
很高兴你能工作! – 2010-04-08 15:58:08
这适用于.NET 4,但不适用于.NET 3.5。在.NET 3.5上,更改WindowInteropHelper的Owner属性不起作用。有谁知道为什么,以及解决方法? – 2013-04-11 21:47:01