2010-04-08 12 views
13

मैं विरासत win32 एप्लिकेशन में WPF विंडो का उपयोग करना चाहता हूं। मैं उन्हें उसी तरह से व्यवहार करना चाहता हूं, जैसे कि WP32 विंडो हमेशा Win32 विंडो के शीर्ष पर प्रदर्शित होती है।WP32 विंडो के मालिक के रूप में Win32 विंडो को कैसे सेट करें?

इसके लिए मैं Win32 विंडो के लिए WPF विंडो के मालिक को सेट करना चाहता हूं, लेकिन मुझे नहीं पता कि इसे कैसे प्राप्त किया जाए।

कोई मदद यहाँ?

के बाद से इस सवाल का जवाब कुछ लिंक, यहाँ के पीछे कोड है कि चाल किया था छिपा है:

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

उत्तर

13

यह आलेख दिखाता है कि Win32 विंडो के लिए WPF विंडो को पारदर्शी ओवरले बनाने के तरीके के साथ-साथ दोनों के लिए हैंडल कैसे प्राप्त करें।

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

यह लेख इसी तरह की सुविधा हासिल करने के लिए एक WindowInteropHelper उपयोग करता है।

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

MSDN WindowInteropHelper पर पेज:

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

आशा है कि मदद करता है, एड

+1

हां, दूसरे आलेख ने निम्न पंक्तियों को कम करने के लिए चाल बनाई: सिस्टम :: विंडोज :: इंटरऑप :: विंडोइंटरोपेलपर^हेल्पर = जीसीएनयू सिस्टम :: विंडोज :: इंटरऑप :: विंडोइंटरोपेलपर (myWpfChildWindow); सहायक-> स्वामी = (सिस्टम :: IntPtr) myMainWindowHWND; – Sam

+1

खुशी है कि आप इसे काम कर रहे हैं! –

+0

यह .NET 4 पर काम करता है लेकिन .NET 3.5 नहीं। .NET 3.5 पर, WindowInteropHelper की मालिक संपत्ति को बदलने का कोई प्रभाव नहीं पड़ता है। क्या कोई जानता है क्यों, और एक कामकाज? –

1

SetParent() के बारे में कैसे? मुझे एक विंडोज़ फॉर्म का एक एमडीआई चाइल्ड बनाते समय काम करता है।

+3

मेरे WPF विंडो कोई समारोह SetParent है()। – Sam

संबंधित मुद्दे