単純な古い xlib (または真新しい XCB) を使用して、ルート ウィンドウ (つまり、画面全体) に対するトップレベル ウィンドウの位置を取得する方法は?
10178 次
4 に答える
14
XGetWindowAttributes によって返される構造の x、y コンポーネントは、ウィンドウの親の原点に相対的です。これは、画面の左上を基準にしたものと同じではありません。
ルート ウィンドウと 0,0 を渡して XTranslateCoordinates を呼び出すと、画面に対するウィンドウの座標が得られます。
私が書いた場合、私はそれを見つけました:
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 に渡された場合にウィンドウを現在の位置に保持する値です。したがって、これらの座標は、ウィンドウの位置であると合理的に見なされます。
于 2014-05-29T18:55:05.870 に答える
6
Xlib の使用:
XWindowAttributes xwa;
XGetWindowAttributes(display, window, &xwa);
printf("%d %d\n", xwa.x, xwa.y);
他にもたくさんの情報がありますXWindowAttributes
。ここを参照してください。
于 2010-10-23T15:56:02.943 に答える
5
XTranslateCoordinates (または同等の xcb) を使用して、ウィンドウの 0,0 をルート ウィンドウ座標に変換します。
于 2010-09-27T19:56:44.830 に答える