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

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

这里有什么帮助吗?

由于答案隐藏在某个链接后面,因此这里的代码实现了这一点:

System::Windows::Interop::WindowInteropHelper^ helper = gcnew System::Windows::Interop::WindowInteropHelper(myWpfChildWindow);
helper->Owner = (System::IntPtr)myMainWindowHWND;
有帮助吗?

解决方案

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

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

本文使用 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

希望有所帮助

其他提示

如何 SetParent() ?我知道作品做一个WPF窗口中的Windows窗体的MDI子的时候。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top