2011-03-22 12 views
6

FvwmButtons (fvwm विंडो मैनेजर का एक मॉड्यूल) में निगल फ़ंक्शन है, जो किसी पैनल में किसी एप्लिकेशन की विंडो एम्बेड करता है।एक विंडो में एक ऐप एम्बेड करें

मुझे मोटीफ और एक्सलिब के साथ ऐसा कुछ करना है। मैं अपने आवेदन में एक्सक्लॉक एम्बेड करना चाहता हूं। मुझे लगता है मुझे एम्बेडेड ऐप की विंडो आईडी बदलनी है।

मैं यह कैसे कर सकता हूं?

उत्तर

5

एकमात्र समर्थित और विश्वसनीय तंत्र XEmbed है, लेकिन इसके लिए एम्बेडेड ऐप को सहयोग करने की आवश्यकता है। एक सहयोगी ऐप के बिना, आप डरावनी हैक्स की दुनिया में हैं।

मूलभूत चीज जो आपको करने की ज़रूरत है वह XReparentWindow() है लेकिन समस्या यह है कि आप विंडो प्रबंधक से लड़ रहे हैं जो विंडो को पुनर्निर्मित करना भी चाहेंगे। आप ऐप को संभावित रूप से भ्रमित कर रहे हैं, जो आईसीसीसीएम और ईडब्लूएमएच व्यवहार की उम्मीद कर रहे हैं, और माता-पिता की खिड़की को डब्लूएम फ्रेम होने की उम्मीद है।

ग्नोम पैनल के वास्तव में पुराने गनोम 1.x संस्करणों में एक निगल सुविधा थी जिसे आप शायद हैक चोरी करने का प्रयास कर सकते थे।

बहुत व्यापक एक्स ज्ञान के बिना यह दर्दनाक होगा, और यहां तक ​​कि भी 100% विश्वसनीय बनाने के लिए आवश्यक नहीं है।

+0

दिलचस्प! धन्यवाद! 'XReparentWindow()' मैं चाहता हूं कि मैं चाहता हूं। अब मुझे सही खिड़की मिलनी है। मैं 'XQueryTree()' के साथ प्रयास कर रहा हूं, लेकिन मुझे नहीं पता कि एक विशिष्ट विंडो कैसे प्राप्त करें। – mghis

+1

एक विशिष्ट विंडो प्राप्त करने के लिए आप शायद क्लास संकेत (XGetClassHint) को देखना चाहते हैं। आप अपरिवर्तनीय विंडो (विंडो प्रबंधक फ्रेम के विपरीत) का पता लगा सकते हैं क्योंकि उनके पास WM_STATE संपत्ति है। –

2

ऐसा लगता है कि आप XEmbed प्रोटोकॉल की तलाश में हैं, here दस्तावेज।

+0

धन्यवाद, ऐसा लगता है कि मुझे क्या चाहिए। मुझे लगता है कि मैं आपके द्वारा लिंक किए गए विनिर्देश को समझ सकता हूं, लेकिन मुझे लगता है कि आप कुछ उदाहरण कोड पोस्ट कर सकते हैं ... – mghis

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