2010-04-08 11 views
13

Quiero usar Windows WPF en una aplicación heredada win32. Me gustaría comportarlos de una manera similar, como la ventana de WPF siempre se muestra en la parte superior de la ventana de win32.Cómo configurar la ventana de Win32 como propietario de la ventana de WPF?

Para esto me gustaría configurar el propietario de la ventana de WPF para las ventanas win32, pero no tengo idea de cómo lograr esto.

¿Alguna ayuda aquí?

Dado que la respuesta se esconde detrás de algún tipo de relación, aquí el código que hizo el truco:

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

Respuesta

13

Este artículo muestra cómo obtener los identificadores para ambos y cómo hacer que la ventana de WPF se convierta en una superposición transparente para la ventana de win32.

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

Este artículo utiliza un WindowInteropHelper para lograr una funcionalidad similar.

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

página de MSDN en WindowInteropHelper:

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

Espero que ayude, Ed

+1

Sí, el segundo artículo hizo el truco, para abreviar las siguientes líneas: Sistema :: Windows :: Interop :: WindowInteropHelper^helper = gcnew Sistema :: Windows :: Interop :: WindowInteropHelper (myWpfChildWindow); helper-> Owner = (System :: IntPtr) myMainWindowHWND; – Sam

+1

¡Me alegra que lo haya conseguido! –

+0

Esto funciona en .NET 4 pero no en .NET 3.5. En .NET 3.5, cambiar la propiedad Owner de WindowInteropHelper no tiene ningún efecto. ¿Alguien sabe por qué y una solución alternativa? –

1

¿Qué tal SetParent()? Sé que funciona cuando se crea una ventana de WPF como MDI Child of a Windows Form.

+3

Mi ventana de WPF no tiene SetParent función(). – Sam

Cuestiones relacionadas