2010-04-08 15 views
13

Eski bir win32 uygulamasında WPF pencerelerini kullanmak istiyorum. WPF penceresi her zaman win32 penceresinin üstünde görüntüleniyormuş gibi benzer şekilde davranmak isterim.Win32 penceresi WPF penceresinin sahibi olarak nasıl ayarlanır?

Bunun için WPF penceresinin sahibini win32 pencerelerine ayarlamak istiyorum, ancak bunu nasıl başaracağımı bilmiyorum.

Burada herhangi bir yardım var mı?

cevap burada bir link, arkasında hile yaptılar kodu gizlenir beri:

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

cevap

13

Bu makalede, WPF penceresinin win32 penceresi için nasıl saydam bir yer kaplaması haline getirileceğinin yanı sıra tutamaçların nasıl elde edileceği gösterilmiştir.

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

Bu makalede, benzer işlevi yerine getirmek için bir WindowInteropHelper kullanır. WindowInteropHelper üzerinde

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

MSDN sayfa:

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

Umut yardımcı olur Ed

+1

Evet, ikinci makale hileyi, kısaca şu satırları yaptı: System :: Windows :: Interop :: WindowInteropHelper^helper = gcnew System :: Windows :: Interop :: WindowInteropHelper (myWpfChildWindow); helper-> Sahip = (Sistem :: IntPtr) myMainWindowHWND; – Sam

+1

Çalıştığına sevindim! –

+0

Bu, .NET 4 üzerinde çalışır, ancak .NET 3.5 değil. .NET 3.5'te WindowInteropHelper'ın Sahip özelliğini değiştirmenin bir etkisi yoktur. Herkes nedenini biliyor mu ve bir çözüm mü? –

1

ne dersiniz SetParent()? Bir WPF penceresi oluştururken bir Windows Formun MDI Child'ı çalıştırdığımdan eminim.

+3

Benim WPF Penceresi hiçbir fonksiyon SetParent() sahip. – Sam

İlgili konular