2010-04-08 12 views
13

Je souhaite utiliser les fenêtres WPF dans une application héritée win32. Je voudrais me comporter de la même manière, comme si la fenêtre WPF était toujours affichée en haut de la fenêtre win32. Pour cela, je voudrais définir le propriétaire de la fenêtre WPF aux fenêtres win32, mais je ne savais pas comment y parvenir.Comment faire pour définir la fenêtre Win32 en tant que propriétaire de la fenêtre WPF?

Toute aide ici?

Depuis la réponse est cachée derrière un lien, ici le code qui a fait l'affaire:

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

Répondre

13

Cet article explique comment obtenir les poignées pour les deux ainsi que comment faire de la fenêtre WPF une superposition transparente pour la fenêtre win32.

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

Cet article utilise un WindowInteropHelper pour accomplir des fonctionnalités similaires.

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

la page MSDN sur WindowInteropHelper:

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

espoir qui aide, Ed

+1

Oui, le deuxième article a fait l'affaire, pour faire court les lignes suivantes: System :: Windows :: Interop :: WindowInteropHelper^helper = gcnew Système :: Windows :: Interop :: WindowInteropHelper (myWpfChildWindow); helper-> Propriétaire = (Système :: IntPtr) myMainWindowHWND; – Sam

+1

Je suis content que vous l'ayez réussi! –

+0

Cela fonctionne sur .NET 4 mais pas sur .NET 3.5. Sur .NET 3.5, la modification de la propriété Owner de WindowInteropHelper n'a aucun effet. Est-ce que quelqu'un sait pourquoi et une solution de contournement? –

1

Que diriez-vous SetParent()? Je sais que fonctionne quand faire une fenêtre WPF un enfant MDI d'un formulaire Windows.

+3

Ma fenêtre WPF n'a pas SetParent de fonction(). – Sam