0

私の写真を添付し​​たように、「Xウィンドウの各コーナーのウィンドウ化されたウィンドウの画面座標」を取得したいと思います。(次の画像で、スクリーン座標として取得したい赤い点を描画します。後で行うことは、OpenGL ウィンドウの正確な中間点を 2D スクリーン座標で取得することです。

ここに画像の説明を入力

私はすでに次のコードを試しました:

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 に答える