Получение позиции оконного окна в системе X-window?

да. Я пробовал оба, используя «XGetWindowAttributes ()» и «XGetGeometry ()», но он дает только значение x, y всегда 0,0.

Но когда я переместил свое окно в середину всего экрана, в этом случае мое возвращаемое значение должно быть 800, 450 вокруг этих значений, если мое разрешение экрана равно 1600, 900. Однако оно всегда возвращает 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;

}

Я хочу получить как минимум двухмерную координату экрана в верхнем левом углу этого окна!


person online.0227    schedule 05.09.2013    source источник


Ответы (1)


Пытаться

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

Это должно дать вам верхний левый угол. Повторите с (0, высота-1), (ширина-1, 0) и (ширина-1, высота-1) для других углов.

person parkydr    schedule 05.09.2013