はい。「XGetWindowAttributes()」と「XGetGeometry()」を使用して両方を試しましたが、常に0,0でx、y値のみが得られます。
しかし、ウィンドウを画面全体の中央に移動すると、画面解像度が 1600、900 の場合、戻り値は 800、450 になるはずです。ただし、常に 0,0 を返します。
以下は私がテストしたコードであり、その下に、描画された赤い点が取得したい2Dスクリーン座標のポイントを説明する写真を添付しています。
int* getWindowPos(Display *dpy, Window *curWin) {
int winPos[2];
unsigned int width, height, bwidth, depth;
Window root;
root = XRootWindow(GLWin.dpy, 0);
// Window myWin;
// myWin = XRootWindow(dpy, 0);
//XWindowAttributes xwa;
//XGetWindowAttributes(dpy, *curWin, &xwa);
XGetGeometry(dpy, *curWin, &root, &winPos[0], &winPos[1], &width, &height, &bwidth, &depth );
// printf("%d %d\n", xwa.x, xwa.y);
return winPos;
}