Получение координат окна, находящегося в фокусе

Модератор: Модераторы разделов

andrew1986
Сообщения: 5

Получение координат окна, находящегося в фокусе

Сообщение andrew1986 »

Доброго времени суток!

Мне необходимо получать координаты окна, которое в данный момент находится в фокусе в KDE. Я пытаюсь получить координаты следующим способом:

Window *window, dummy;
int x, y, *revert_to_return;
XWindowAttributes attributes;

XSync(QX11Info::display, false);
XGetInputFocus(QX11Info::display, window, revert_to_return);
XGetWindowAttributes(QX11Info::display, window, &attributes);
XTranslateCoordinates(QX11Info::display, window, attributes.root, 0, 0, &x, &y, &dummy);

Но в результате я получаю сообщение об ошибке:
Error: BadWindow (invalid Window parameter) 3
Major opcode: 3 (X_GetWindowAttributes)
Resourse id: 0x1

Error: BadWindow (invalid Window parameter) 3
Major opcode: 40 (X_TranslateCoords)
Resourse id: 0xbf9b17c0

Если у кого-нибудь есть идеи в чем может быть проблема или кто-то может предложить другой способ решения данной задачи, то я был бы весьма благодарен.

Спасибо!
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Получение координат окна, находящегося в фокусе

Сообщение d_n_k »

все сказанное есть имхо...
Спасибо сказали:
andrew1986
Сообщения: 5

Re: Получение координат окна, находящегося в фокусе

Сообщение andrew1986 »

Спасибо, но эта библиотека есть только для GNOM'а. Есть ли что-нибудь подобное для KDE?
Спасибо сказали:
gmorgunov
Сообщения: 27
ОС: linux mandriva2007

Re: Получение координат окна, находящегося в фокусе

Сообщение gmorgunov »

Попробуйте передавать указатели, может пойдет.

Код: Выделить всё

Window *window, *dummy; // указатели на Window
int x, y, *revert_to_return;
XWindowAttributes *attributes; // указатель на атрибуты

XSync(QX11Info::display, false);
XGetInputFocus(QX11Info::display, window, revert_to_return);
XGetWindowAttributes(QX11Info::display, window, attributes); // изменена
XTranslateCoordinates(QX11Info::display, window, attributes->root, 0, 0, &x, &y, dummy); // изменена
Спасибо сказали:
andrew1986
Сообщения: 5

Re: Получение координат окна, находящегося в фокусе

Сообщение andrew1986 »

gmorgunov писал(а):
10.07.2008 09:10
Попробуйте передавать указатели, может пойдет.

Код: Выделить всё

Window *window, *dummy; // указатели на Window
int x, y, *revert_to_return;
XWindowAttributes *attributes; // указатель на атрибуты

XSync(QX11Info::display, false);
XGetInputFocus(QX11Info::display, window, revert_to_return);
XGetWindowAttributes(QX11Info::display, window, attributes); // изменена
XTranslateCoordinates(QX11Info::display, window, attributes->root, 0, 0, &x, &y, dummy); // изменена


К сожалению, не помогло :(
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Получение координат окна, находящегося в фокусе

Сообщение d_n_k »

посмотри на исходники wmctrl и напиши свой велосипед
все сказанное есть имхо...
Спасибо сказали: