Jak zdobyć najwyższego poziomu położenia okna w stosunku do okna głównego (czyli cały ekran) stosując zwykły ol”Xlib (lub zupełnie nowy xcb)?Okna w Xlib
6
A
Odpowiedz
4
Korzystanie XTranslateCoordinates (lub równoważny) xcb przełożenia 0,0 na oknie, aby wykorzenić współrzędne okna.
7
Korzystanie Xlib:
XWindowAttributes xwa;
XGetWindowAttributes(display, window, &xwa);
printf("%d %d\n", xwa.x, xwa.y);
Istnieje także wiele innych informacji, które pochodzą z XWindowAttributes
. Zobacz here.
6
X, Y elementy konstrukcji są zwracane przez XGetWindowAttributes względem pochodzenia okna rodzicem. To nie to samo, co w lewym górnym rogu ekranu.
Wywoływanie XTranslateCoordinates przechodzącej okna głównego i 0,0 daje współrzędne okna względem ekranu.
stwierdziliśmy, że jeśli piszę:
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);
wartości wyświetlanych przez printf są te, które, jeśli przekazany do XMoveWindow przechowywać okno w jego aktualnej pozycji. Zatem te współrzędne są rozsądnie uznawane za położenie okna.
to jest odpowiedź, że pracował dla mnie, a także – thinlizzy