2010-09-27 51 views
6

Cách nhận vị trí cửa sổ cấp cao nhất liên quan đến cửa sổ gốc (tức là toàn bộ màn hình) bằng cách sử dụng đồng bằng ol 'xlib (hoặc thương hiệu XCB mới)?Vị trí cửa sổ trong Xlib

Trả lời

4

Sử dụng XTranslateCoordinates (hoặc xcb tương đương) để dịch 0,0 trên cửa sổ thành các tọa độ cửa sổ gốc.

7

Sử dụng Xlib:

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

Ngoài ra còn có rất nhiều thông tin khác đi kèm với XWindowAttributes. Xem here.

6

Các thành phần x, y của cấu trúc được trả về bởi XGetWindowAttributes có liên quan đến nguồn gốc của bố mẹ cửa sổ. Điều đó không giống với phần trên cùng bên trái của màn hình.

Gọi XTranslateCoordinates đi qua cửa sổ gốc và 0,0 cung cấp tọa độ của cửa sổ liên quan đến màn hình.

Tôi thấy rằng nếu tôi viết:

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

Các giá trị được hiển thị bởi các printf là những người mà, nếu được thông qua để XMoveWindow, giữ cho cửa sổ ở vị trí hiện tại của nó. Do đó những tọa độ đó được xem là vị trí của cửa sổ.

+0

đây cũng là câu trả lời phù hợp với tôi – thinlizzy

Các vấn đề liên quan