2010-12-23 10 views
7

मैं X11 सर्वर में कर्सर शीर्ष पर किस शीर्ष विंडो को पुनर्प्राप्त कर सकता हूं?मैं उस विंडो को कैसे प्राप्त करूं जिसमें वर्तमान में X11 के साथ कर्सर है?

खिड़की को "सक्रिय" (चयनित, खुला, जो कुछ भी नहीं होना चाहिए), यह सिर्फ कर्सर को इसके ऊपर तैरना पड़ता है।

अग्रिम धन्यवाद।

उत्तर

4

आप माउस स्थिति प्राप्त करने के लिए XQueryPointer() का उपयोग कर सकते हैं। फिर XQueryTree() का उपयोग कर विंडो सूची प्राप्त करें। XQueryTree() खिड़की की सूची को उचित जेड-ऑर्डर में लौटाता है ताकि आप सभी खिड़कियों के माध्यम से लूप कर सकें जब तक कि आपको कोई ऐसा पता न लगे, जिसका बाउंडिंग बॉक्स पॉइंटर के नीचे है, XGetWindowAttributes() आपको बाउंडिंग बॉक्स को समझने के लिए आवश्यक सब कुछ देगा। मुझे यकीन नहीं है कि आप आकार की खिड़कियों के साथ क्या करेंगे।

मैंने कुछ वर्षों से X11 के साथ काम नहीं किया है, इसलिए यह एक बदसूरत दृष्टिकोण हो सकता है लेकिन इसे काम करना चाहिए। मेरे पास अब भी मेरी O'Reilly X11 पुस्तकें नहीं हैं, यदि आप निम्न स्तर X11 सामान के साथ काम करने जा रहे हैं तो आप उस श्रृंखला में से एक पुस्तक पर अपने हाथों को प्राप्त करना चाहेंगे; मुझे लगता है कि पूरी श्रृंखला इन दिनों मुफ्त ऑनलाइन उपलब्ध है।

+0

उदाहरण के लिए यहां: http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_ACRO_SUP/XWINSYS.PDF –

+0

मैं एड्रियन नाई किताबों (एक्सएलआईबी प्रोग्रामिंग मैनुअल, एक्सएलआईबी रेफरेंस मैनुअल) के बारे में सोच रहा था O'Reilly, वह श्रृंखला मेरी एक्स 11/मोटीफ दिनों में मेरी बाइबल वापस थी। –

3

मैंने एक दशक से अधिक समय तक X11 प्रोग्राम नहीं किया है, इसलिए मुझे यह गलत होने पर क्षमा करें।

मेरा मानना ​​है कि आप अपनी खिड़कियों पर माउस आंदोलन घटनाओं के लिए पंजीकरण कर सकते हैं। यदि आप कुछ चर या अन्य में विंडो हैंडल को संग्रहीत करके इस घटना को संभालते हैं, और फिर ईवेंट को संभालने के लिए यह पेड़ को नीचे नहीं डालता है, तो उस समय जब आप विंडो की पहचान करना चाहते हैं तो आप चर को क्वेरी कर सकते हैं।

हालांकि यह केवल तभी काम करेगा जब माउस एक खिड़की से अधिक हो, जिसके लिए आपने एक उपयुक्त ईवेंट हैंडलर पंजीकृत किया है, इसलिए आपको अन्य अनुप्रयोगों से संबंधित विंडो के बारे में पता नहीं चलेगा - जब तक कि अन्य लोगों के ईवेंट के लिए पंजीकरण करने का कोई तरीका न हो खिड़कियां जो संभव हो सकती है।

दूसरे उत्तर पर लाभ यह है कि आपको पूरे पेड़ को पार करने की आवश्यकता नहीं है। नुकसान यह है कि आपको बहुत से माउस आंदोलन कार्यक्रमों को संभालने की आवश्यकता है, और यह अन्य लोगों की खिड़कियों को खोजने के लिए काम नहीं कर सकता है।

मेरा मानना ​​है कि वहां माउस एंटर और माउस छोड़ने की घटनाएं भी हो सकती हैं जो आवश्यक प्रोसेसिंग की मात्रा को कम कर देगी।

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

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