0

就像附上我的照片一样,我想获得“X 窗口中每个角落的窗口窗口的屏幕坐标”。(我在下图中绘制了我想要作为屏幕坐标的红点。我稍后要做的是在 2D 屏幕坐标中获取我的 OpenGL 窗口的精确中间点。

在此处输入图像描述

我已经尝试过以下代码:

int* getWindowPos(Display *dpy) { int winPos[2];

Window myWin;
myWin = XRootWindow(dpy, 0);

XWindowAttributes xwa;
XGetWindowAttributes(dpy, myWin, &xwa);
    // printf("%d %d\n", xwa.x, xwa.y);

return winPos;
 }

但是这个“XWindowAttributes”总是给我x点0,y点0,宽度1600和高度900,这与我的屏幕分辨率相同。

以下是我为创建这个窗口窗口而编写的代码。

   GLWin.win = XCreateWindow(GLWin.dpy, RootWindow(GLWin.dpy, vi->screen),
            0, 0, 800, 600, 0, vi->depth, InputOutput, vi->visual,
            CWBorderPixel | CWColormap | CWEventMask, &GLWin.attr);
4

1 回答 1

3

您将窗口存储到GLWin.win中,但正在查询根窗口的大小和位置。“根窗口”是全屏背景窗口(桌面),因此它返回您的屏幕分辨率是有道理的。XGetAttributes()如果您想要这些尺寸,只需将您的实际窗口(GLWin.win)传递给。

于 2013-09-03T17:08:54.430 回答