LibKing » Книги » comp-programming » А. Полищук - Программирование в X Window средствами Free Pascal

А. Полищук - Программирование в X Window средствами Free Pascal

Тут можно читать онлайн А. Полищук - Программирование в X Window средствами Free Pascal - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
libking
  • Название:
    Программирование в X Window средствами Free Pascal
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.7/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

А. Полищук - Программирование в X Window средствами Free Pascal краткое содержание

Программирование в X Window средствами Free Pascal - описание и краткое содержание, автор А. Полищук, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Программирование в X Window средствами Free Pascal - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование в X Window средствами Free Pascal - читать книгу онлайн бесплатно, автор А. Полищук
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Если окно (окна) программы имеют собственную цветовую палитру, то приложение должно соответствующим образом задать для него атрибут colormap. Программа заносит идентификатор окна (идентификаторы окон) в список, ассоциированный со свойством, имя которого WM_COLORMAP_WINDOWS. Делается это процедурой XSetWMColormapWindows(). Получить список, уже находящийся в свойстве, можно, обратившись к XGetWMColormapWindows().

Когда окно открыто, пользователь посредством менеджера совершает над ним разные действия. Программе может быть желательно перехватывать некоторые из них. Так, например, если окно представляет собой редактор текста, и пользователь пытается его закрыть, то разумно спросить у сидящего за компьютером человека, а не желает ли он предварительно сохранить результаты редакции. Начиная с X11R4 системой предусматривается свойство с именем WM_PROTOCOLS. Оно содержит список атомов, и каждый из них идентифицирует свойство, связанное с действиями, о которых надо оповещать программу. Эти свойства следующие:

• WM_TAKE_FOCUS - задается, если программа хочет передавать фокус ввода между своими окнами самостоятельно; в этом случае менеджер не будет управлять фокусом, ввода, а пошлет приложению событие ClientMessage, у которого поле message_type равно атому, соответствующему свойству WM_PROTOCOLS, а поле data.l[0] равно атому, соответствующему свойству WM_TAKE_FOCUS; в ответ на это событие программа должна сама обратиться к XSetInputFocus() для задания окна, имеющего фокус ввода;

• WM_SAVE_YOURSELF amp;mdash задается, если программа хочет перехватить момент своего завершения; менеджер окон посылает приложению событие ClientMessage, у которого поле message_type равно атому, соответствующему свойству WM_PROTOCOLS, а поле data.l[0] равно атому, соответствующему свойству WM_SAVE_YOURSELF; в ответ программа может сохранить свое текущее состояние;

• WM_DELETE_WINDOW - задается, если программа хочет перехватить моменты, когда менеджер окон закрывает принадлежащие ей окна; менеджер окон посылает приложению событие ClientMessage, у которого поле message_type равно атому, соответствующему свойству WM_PROTOCOLS, а поле data.l[0] равно атому, соответствующему свойству WM_DELETE_WINDOW; далее программа сама решает, оставить окно на экране или удалить его с помощью XDestroyWindow().

Свойство WM_PROTOCOLS задается процедурой XSetWMProtocols() и может быть получено с помощью XGetWMProtocols().

Приведем фрагмент программы, задающей свойство 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 Составьте программу порождающую два расположенных рядом дочерних окна в - фото 24

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

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

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

4 Создайте окно убегающее от указателя мыши 5 Создайте программу - фото 26

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

5 Создайте программу которая по нажатию клавиши мыши в основном окне создает - фото 27

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

6 Создайте программу моделирования эволюции клеточного автомата Жизнь - фото 28

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

Литература Полищук АП Семериков СА Программирование в X Window Кривой - фото 29

Литература

Полищук А.П., Семериков С.А. Программирование в 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.

Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


А. Полищук читать все книги автора по порядку

А. Полищук - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Программирование в X Window средствами Free Pascal, автор: А. Полищук. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img