2010-09-27 138 views

回答

4

使用XTranslateCoordinates(或xcb等價物)將窗口上的0,0轉換爲根窗口座標。

7

使用的Xlib:

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

也有很多附帶XWindowAttributes其它信息的。見here

6

XGetWindowAttributes返回的結構的x,y組件相對於窗口父項的原點。這與屏幕左上方的相對不一樣。

調用XTranslateCoordinates傳遞根窗口和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 2015-06-27 20:00:19