是的。我尝试了这两种方法,使用“XGetWindowAttributes()”和“XGetGeometry()”,但它只给出 x,y 值始终为 0,0。
但是,当我将窗口移动到整个屏幕的中间时,如果我的屏幕分辨率为 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;
}