Xlib

2010-09-27 13 views
6

में विंडो स्थिति सादे ओल 'xlib (या ब्रांड नई एक्ससीबी) का उपयोग कर रूट विंडो (यानी पूरी स्क्रीन) के सापेक्ष शीर्ष-स्तरीय विंडो स्थिति कैसे प्राप्त करें?Xlib

उत्तर

4

विंडो समन्वय रूट करने के लिए विंडो पर 0,0 अनुवाद करने के लिए XTranslateCordordates (या xcb समतुल्य) का उपयोग करें।

7

Xlib का उपयोग करना:

XWindowAttributes xwa; 
XGetWindowAttributes(display, window, &xwa); 
printf("%d %d\n", xwa.x, xwa.y); 

वहाँ भी अन्य जानकारियां कि XWindowAttributes के साथ आ रहे हैं। here देखें।

6

XGetWindowAttributes द्वारा लौटाई गई संरचना के एक्स, वाई घटक विंडो के माता-पिता की उत्पत्ति के सापेक्ष हैं। यह स्क्रीन के ऊपरी बाईं ओर के सापेक्ष जैसा नहीं है।

कॉलिंग XTranslate को रूट विंडो से गुजरने वाले समन्वय और 0,0 स्क्रीन के सापेक्ष विंडो के निर्देशांक देता है।

मैंने पाया है कि अगर मैं लिखना:

int x, y; 
Window child; 
XWindowAttributes xwa; 
XTranslateCoordinates(display, window, root_window, 0, 0, &x, &y, &child); 
XGetWindowAttributes(display, window, &xwa); 
printf("%d %d\n", x - xwa.x, y - xwa.y); 

मूल्यों printf द्वारा प्रदर्शित उन जो, अगर XMoveWindow को पारित कर दिया, अपने वर्तमान स्थान पर विंडो रहते हैं। इस प्रकार उन निर्देशांकों को उचित रूप से खिड़की की स्थिति माना जाता है।

+0

यह वह उत्तर है जो मेरे लिए भी काम करता है – thinlizzy

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