2010-09-27 14 views

Respuesta

4

Utilice XTranslateCoordinates (o xcb equivalente) para traducir 0,0 en la ventana a las coordenadas de la ventana raíz.

7

Usando Xlib:

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

También hay un montón de otras informaciones que vienen con XWindowAttributes. Ver here.

6

El x, componentes Y de la estructura devueltos por XGetWindowAttributes son en relación con el origen de los padres de la ventana. Eso no es lo mismo que en relación con la esquina superior izquierda de la pantalla.

XTranslateCoordinates de llamada que pasa la ventana raíz y 0,0 da las coordenadas de la ventana con respecto a la pantalla.

He descubierto que si escribo:

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); 

Los valores mostrados por el printf son los que, de ser aprobada a XMoveWindow, mantener la ventana en su posición actual. Por lo tanto, esas coordenadas se consideran razonablemente como la posición de la ventana.

+0

esta es la respuesta que funcionó para mí también – thinlizzy

Cuestiones relacionadas