2010-09-27 123 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