Как XGetWindowProperty() и XListProperties() связаны для определенного идентификатора окна
События "PropertyNotify" генерируются xServer для окна, скажем, с идентификатором var "win". Теперь я вызываю функцию XLIB XGetWindowProperty()
а также XListProperties()
для того же win-id, как указано ниже
int getProp(Atom atom, Window win, unsigned long *nitems_ret,
unsigned char **prop_return, Atom *type_ret, int *format_ret)
{
Atom type;
int format;
unsigned long bytes_after_ret;
if (!type_ret)
type_ret=&type;
if (!format_ret)
format_ret=&format;
XGetWindowProperty(m_display, win, atom, 0, 65536, 0,
AnyPropertyType, type_ret, format_ret,
nitems_ret, &bytes_after_ret, prop_return);
// printing the content of variable "prop_return" suppose it's not empty
-----------------(1)
int nprops = 0;
Atom *prorList = XListProperties(m_display, win, &nprops);
// printing content of var "prorList" ------------------------(2)
};
теперь сравниваем выходные данные (1) и (2), поэтому должен ли выход (1) содержаться в (2) или нет. Пожалуйста, дайте основание для подтверждения ответа. Как я понял чтение из сети, что о XGetWindowProperty()
что он возвращает требуемый тип свойства из свойства данного идентификатора окна и других приложений. Здесь для проверки я просто передаю аргумент AnyPropertyType
,
Теперь я также вызываю функцию XListProperties()
перечислить все атрибуты Atom данного win-id и распечатать их для сравнения с выводом XGetWindowProperty()
(рассмотрите выход не NULL
) но то, что я нахожу, что нет совпадения ч / б им. Теперь мой вопрос, откуда эти свойства появились в XGetWindowProperty()
или вина лежит в моем понимании. Пожалуйста, объясните эти функции и разницу в их атрибутах. А также было бы очень полезно, если кто-то может порекомендовать хорошую книгу или ссылку на сайт для лучшего понимания.
Спасибо,
1 ответ
XListProperties
перечисляет имена свойств. prop_return
это значение свойства. Нет причин, по которым он должен содержаться в списке имен свойств. atom
это имя этого свойства, и оно должно быть найдено в этом списке.