17

我想在旧版 win32 应用程序中使用 WPF 窗口。我想以类似的方式表现它们,就像 WPF 窗口总是显示在 win32 窗口的顶部。

为此,我想将 WPF 窗口的所有者设置为 win32 窗口,但我不知道如何实现这一点。

这里有什么帮助吗?

由于答案隐藏在某个链接后面,这里的代码可以做到这一点:

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

2 回答 2

13

本文展示了如何获取两者的句柄以及如何使 WPF 窗口成为 win32 窗口的透明覆盖。

http://dedjo.blogspot.com/2007/04/transparent-wpf-control-over-unmanaged.html

本文使用 WindowInteropHelper 来完成类似的功能。

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

WindowInteropHelper 上的 MSDN 页面:

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

希望有帮助,埃德

于 2010-04-08T11:48:56.457 回答
1

怎么样SetParent()?我知道使 WPF 窗口成为 Windows 窗体的 MDI 子窗口时有效。

于 2010-04-08T11:48:11.527 回答