function XChangeWindowAttributes(prDisplay: PDisplay;
nWnd: TWindow; nValueMask: cardinal;
prWinAttr: PXSetWindowAttributes): longint; cdecl; external;
Требуемые установки атрибутов передаются через аргумент prWinAttr. Он указывает на переменную типа TXSetWindowAttributes. Ее поля те же, что и соответствующие поля TXWindowAttributes. Разница заключается лишь в разных именах некоторых из них. Так, поле your_event_mask в TXWindowAttributes соответствует полю event_mask в TXSetWindowAttributes.
Структура TXSetWindowAttributes содержит дополнительное поле cursor. Оно определяет
Параметр nValueMask при вызове указанной процедуры представляет комбинацию флагов, говорящих о том, какие из полей переменной prWinAttr принимать во внимание.
В следующем примере приведен фрагмент кода, в котором изменяются параметры border_pixmap и win_gravity некоторого окна:
…
var
prDisplay: PDisplay;
prWnd: TWindow;
rWndAttr: TXSetWindowAttributes;
nValMask: cardinal;
const
nPixmap: TPixmap = 0;
…
nValMask:= CWBorderPixmap or CWWinGravity;
rWndAttr.border_pixmap:= nPixmap;
rWndAttr.win_gravity:= StaticGravity;
…
XChangeWindowAttributes (prDisplay, prWnd, nValMask, @rWndAttr);
…
Отдельные атрибуты окна можно изменить более просто с помощью специальных процедур. Так, например, функция XSetWindowBackground() меняет фон окна, XSetWindowBorder() - его край.
1.1.9 Операции над окнами
Манипулировать окнами можно не только с помощью атрибутов: Xlib предоставляет набор функций для изменения их размеров, перемещения на экране и в стеке окон, сворачивания и т.п.
Первая пара операций, которые можно применить к окну -
Отображение окна может быть выполнено с помощью XMapWindow(), скрытие - с помощью XUnmapWindow(). Функция отображения заставит событие Expose послаться программе, если только окно полностью не закрыто другими окнами.
Другое действие, которое можно выполнить над окнами -
Все приведенные выше функции изменяли свойства одного окна. Существует ряд свойств, связанных с данным окном и другими окнами. Одно из них -
С помощью функции XIconifyWindow() окно может быть
Следующий пример демонстрирует использование операций над окнами:
uses x,xlib,xutil,crt,dos;