如何在X窗口中获取每个角落的窗口窗口的屏幕坐标?

时间:2013-09-03 16:42:58

标签: c++ linux opengl xlib x11

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

enter image description here

我已尝试使用以下代码:

  

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”总是给我0点x点,0点y点,宽度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);

1 个答案:

答案 0 :(得分:3)

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