gpt4 book ai didi

c++ - 获取Windowed窗口在X-window系统中的位置?

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:26 25 4
gpt4 key购买 nike

是的。我尝试了两种方法,即使用“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;

}

I want to get at least 2D screen coordinate of top-left position of this window!

最佳答案

尝试

Window child;
XTranslateCoordinates(dpy, *curWin, root, 0, 0, &winPos[0], &winPos[1], &child);

这应该给你左上角。对其他角重复 (0, height-1)、(width-1, 0) 和 (width-1, height-1)。

关于c++ - 获取Windowed窗口在X-window系统中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com