Чтение онлайн

на главную - закладки

Жанры

Программирование в X Window средствами Free Pascal

Семериков С. А.

Шрифт:

Приведем фрагмент программы, задающей свойство WM_PROTOCOLS и производящей соответствующую обработку событий.

…

var

 prDisplay: PDisplay;

 nScreenNum: integer;

 prGC: TGC;

 rEvent: TXEvent;

 nWnd: TWindow;

 pnProtocol: array [0…1] of TAtom;

 nWMProtocols: TAtom;

 (
*
Устанавливаем связь с сервером, получаем номер экрана,
создаем окно, выбираем события, обрабатываемые программой
*)

…

 (* Задаем свойство WM_PROTOCOLS *)

 pnProtocol [0]:= XInternAtom (prDisplay, 'WM_TAKE_FOCUS', True);

 pnProtocol [1]:= XInternAtom (prDisplay, 'WM_SAVE_YOURSELF', True);

 nWMProtocols:= XInternAtom (prDisplay, 'WM_PROTOCOLS', True);

 XSetWMProtocols (prDisplay, nWnd, pnProtocol, 2);

 (* Показываем окно *)

 XMapWindow (prDisplay, nWnd);

 (* Цикл получения и обработки событий *)

 while true do

 begin

XNextEvent (prDisplay, @rEvent);

case (rEvent.type) of

…

ClientMessage:

begin

if (rEvent.xclient.message_type = nWMProtocols) then

begin

if (rEvent.xclient.data.l[0] = pnProtocol[0]) then

writeln('Receiving the input focus.')

else

if (rEvent.xclient.data.l[0] = pnProtocol[1]) then

begin

XCloseDisplay (prDisplay);

halt(0);

end;

end;

end;

…

end;

 end;

…

Заказывается реакция на два события: получение фокуса ввода (WM_TAKE_FOCUS) и завершение программы (WM_SAVE_YOURSELF). Когда сервер посылает событие первого типа, задача печатает соответствующее сообщение на устройства вывода. При приходе события второго типа, программа закрывает связь с сервером и завершается.

1.5.3 Лабораторная работа #5 "Межклиентское взаимодействие"

1. Составьте программу, которая при получении фокуса ввода перекрашивает

свое окно в другой цвет.

2. Составьте программу, порождающую два расположенных рядом дочерних окна, в которых отображаются графики функций sin(x) на отрезке [0; 2?] и exp(x) на отрезке [-2; 2]. Графики масштабировать по размеру окон.

3. Создайте окно, изменяющее свои размеры таким образом, чтобы мышь всегда была в его центре.

4. Создайте окно, "убегающее" от указателя мыши.

5. Создайте программу, которая по нажатию клавиши мыши в основном окне создает новое окно (не более 100 одновременно), а по нажатию клавиши мыши в дочернем окне удаляет его. Если дочернее окно существует более одной минуты, оно должно самоудаляться.

6. Создайте программу моделирования эволюции клеточного автомата "Жизнь", ячейки которого имею два состояния: пусто и заполнено. Если рядом с пустой ячейкой три заполненных, она заполняется. Если рядом с заполненной ячейкой меньше двух или больше трех заполненных, ячейка становится пустой. Размеры модельного поля - 64×64 ячейки, вначале поле пустое. По нажатию любой кнопки мыши состояние ячейки меняется на противоположное, по нажатию пробела осуществляется один шаг эволюции, а по нажатии Escape - выход из программы.

Литература

Полищук А.П., Семериков С.А. Программирование в X Window.
– Кривой Рог: Издательский отдел КГПУ, 2003.
– 192 с.

Полищук А.П., Семериков С.А. Событийно-ориентированное программирование.
– Кривой Рог: КГПУ, 2001.
– 336 с.

Робачевский А.М. Операционная система UNIX.
– К.: БХВ, 2000.
– 518 с.

Adrian Nye. Volume 0: X Protocol Reference Manual, 4rd Edition.
– O'Reilly & Associates, 1990.
– 446 p.

Adrian Nye. Volume 1: Xlib Programming Manual, 3rd Edition.
– O'Reilly & Associates, 1992.
– 821 p.

Adrian Nye. Volume 2: Xlib Reference Manual.
– O'Reilly & Associates, 1992.
– 935 p.

Robert W. Scheifler & James Gettys. X Window System: The Complete Reference to Xlib, X Protocol, ICCCM, XLFD. X Version 11, Release 4.
– Digital Press, 1992.
– 711 p.

Поделиться:
Популярные книги

Мой муж – чудовище! Изгнанная жена дракона

Терин Рем
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мой муж – чудовище! Изгнанная жена дракона

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Приключения Тома Сойера. Приключения Гекльберри Финна

Твен Марк
12. Библиотека приключений
Детские:
детские приключения
9.48
рейтинг книги
Приключения Тома Сойера. Приключения Гекльберри Финна

Громовая поступь. Трилогия

Мазуров Дмитрий
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Громовая поступь. Трилогия

День вампира (сборник)

Дивов Олег Игоревич
Фантастика:
социально-философская фантастика
боевая фантастика
ужасы и мистика
6.80
рейтинг книги
День вампира (сборник)

Корабль смерти, Стальной человек и другие самые невероятные истории (сборник)

Матесон Ричард
Шедевры фантастики
Фантастика:
научная фантастика
ужасы и мистика
6.80
рейтинг книги
Корабль смерти, Стальной человек и другие самые невероятные истории (сборник)

La Storia. История. Скандал, который длится уже десять тысяч лет

Моранте Эльза
Проза:
классическая проза
современная проза
6.25
рейтинг книги
La Storia. История. Скандал, который длится уже десять тысяч лет

Каторга

Пикуль Валентин Саввич
Проза:
историческая проза
9.36
рейтинг книги
Каторга

Плутовской роман: Жизнь Ласарильо с Тор-меса, его невзгоды и злоключения. История жизни пройдохи по имени дон Паблос. Хромой Бес. Севильская Куница, или Удочка для кошельков. Злополучный скиталец, или Жизнь Джека Уилтона .

де Кеведо-и-Вильегас Франсиско
40. Библиотека всемирной литературы
Старинная литература:
европейская старинная литература
6.80
рейтинг книги
Плутовской роман: Жизнь Ласарильо с Тор-меса, его невзгоды и злоключения. История жизни пройдохи по имени дон Паблос. Хромой Бес. Севильская Куница, или Удочка для кошельков. Злополучный скиталец, или Жизнь Джека Уилтона .

Сицилианская защита

Васильев Андрей Александрович
5. Акула пера в Мире Файролла
Фантастика:
фэнтези
киберпанк
рпг
9.27
рейтинг книги
Сицилианская защита

Это неистовое сердце

Роджерс Розмари
Любовные романы:
исторические любовные романы
8.18
рейтинг книги
Это неистовое сердце

Стеллар. Заклинатель

Прокофьев Роман Юрьевич
3. Стеллар
Фантастика:
боевая фантастика
8.43
рейтинг книги
Стеллар. Заклинатель

Кукурузный мёд (сборник)

Лорченков Владимир Владимирович
Проза:
современная проза
5.00
рейтинг книги
Кукурузный мёд (сборник)

Я все еще царь. Книга XXXI

Дрейк Сириус
31. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я все еще царь. Книга XXXI