: Программирование в среде X Window на основе библиотеки Xlib :

С о д е р ж а н и е

Введение

I. Базовые понятия X Window
Характеристики X-окна
Менеджер окон
Свойства и атомы
Первый пример
События
Атрибуты окна
Операции над окнами

II. Текст и графика
Графический контекст
Характеристики графического контекста
Вывод текста, работа с шрифтами
Использование цвета
Битовые и пиксельные карты
Изменяем курсор мыши

III. Работа с внешними устройствами
Клавиатура
Мышь

IV. Ресурсы программ
Формат файла ресурсов
Доступ к ресурсам программ

V. Взаимодействие клиентов
Механизм свойств
Работаем с менеджером окон

VI. Дополнительная информация

VII. Литература

Взаимодействие клиентов

Механизм свойств

Свойство есть набор данных, ассоциированных с окном. Они хранятся в специальных таблицах в памяти компьютера, на котором работает сервер. Каждое свойство имеет имя. Разные окна могут иметь свойства с одинаковыми именами.

Поскольку передача имен - строк произвольной длины - от клиента к серверу может увеличить нагрузку на сеть, X идентифицирует свойства с помощью целых чисел - атомов. Функция XInternAtom() включает свойство с указанным именем в таблицу сервера и возвращает соответствующий атом. Полный список реализуемых X протоколом атомов можно найти в файле /usr/include/X11/Xatom.h.

Данные свойства рассматриваются сервером как массив единиц длиной 8, 16 или 32 бита. Их конкретная интерпретация осуществляется программами-клиентами.

Каждое свойство имеет тип, который, в свою очередь, также задается тем или иным свойством. Например, свойство, соответствующее атому XA_STRING, задает тип "строка".

Для работы со свойствами кроме XInternAtom() используются следующие функции: XChangeProperty() - меняет данные свойства: XGetWindowProperty() - позволяет получить данные свойства.

Особую роль играют свойства, данные которых содержат строки текста. Они так и называются текстовыми и имеют тип "TEXT". Таковыми являются, например, имена (заголовки) окно, имена пиктограмм и т.д. Данные текстового свойства описываются структурой XTextProperty. Функция XStringListToTextProperty() переводит список строк в набор данных типа XTextProperty:

/* Эта переменная будет хранить созданное свойство. */
XTextProperty title_property;

/* Строка, преобразуемая в свойство. */
char* title = "hello";

/* перевод строки в свойство X. */
int rc = XStringListToTextProperty(&title,
                  1,
                  &title_property);
/* проверка успешности преобразования. */
if (rc == 0) {
  fprintf(stderr, "XStringListToTextProperty - нет памяти\n");
  exit(1);
}

XTextPropertyToString() выполняет обратное преобразование.

<<< Содержание >>>