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

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

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

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

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

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

Интервал:

Закладка:

Сделать

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

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

(* Эта переменная будет хранить созданное свойство. *)

var

window_title_property: TXTextProperty;

rc: TStatus;

(* Строка, преобразуемая в свойство. *)

const

window_title: PChar = 'hello, world';

(* перевод строки в свойство X. *)

rc:= XStringListToTextProperty(@window_title, 1, @window_title_property);

(* проверка успешности преобразования. *)

if (rc = 0) then begin

writeln('XStringListToTextProperty - нет памяти');

halt(1);

end;

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

1.5.2 Общение с менеджером окон

Менеджер окон - это специальный клиент, в задачи которого входит интерактивное перемещение окон по экрану, изменение их размеров, минимизация (превращение в пиктограмму) и многое другое. Чтобы облегчить менеджеру его нелегкую жизнь, программам рекомендуется при инициализации сообщить о себе определенную информацию. Передается она через предопределенные свойства, которые известны менеджеру и могут быть им прочитаны. Некоторые из свойств (так называемые стандартные) задавать обязательно. Все остальное определяется по усмотрению программы. Наиболее простой способ задать стандартные свойства - обратиться к процедурам XSetStandardProperties() или XSetWMProperties().

Ниже перечисляются свойства, создаваемые для менеджера окон программами, а также процедуры для работы с ними.

Имя (заголовок) окна. Идентифицируется атомом XA_WM_NAME и имеет тип "TEXT". Данные свойства - структура TXTextProperty. Для задания свойства используется процедура XStoreName() (XSetWMName()). Получить его можно с помощью XFetchName() (XGetWMName()).

Имя пиктограммы. Идентифицируется атомом XA_WM_ICONNAME и имеет тип "TEXT". Данные свойства - структура TXTextProperty. Для задания свойства используется процедура XSetIconName() (XSetWMIconName()). Получить его можно с помощью XGetIconName() (XGetWMIconName()).

Рекомендации (hints) о геометрии окна. Идентифицируется атомом XA_WM_NORMAL_HINTS и имеет тип XA_WM_SIZE_HINTS. Данные свойства - структура типа TXSizeHints. Для задания свойства используется процедура XSetNormalHints().

В ряде случаев стоит сообщить оконному менеджеру о том, какой размер окна мы хотим получить, и в каких пределах будут изменяться его размеры. Например, для терминальной программы (такой, как xterm), хотелось бы, чтобы окно всегда содержало полное количество строк и столбцов. В других случаях нежелательно давать возможность менять размер окна (например, в диалоговых окнах). Эти пожелания можно передать оконному менеджеру, хотя ничто не помешает ему их проигнорировать. Для этого необходимо создать структуру данных, заполнить ее необходимыми данными и затем использовать функцию XSetWMNormalHints():

(* указатель на структуру рекомендаций о размерах. *)

var

win_size_hints: PXSizeHints;

win_size_hints:= XAllocSizeHints();

if (win_size_hints=nil) then begin

writeln('XAllocSizeHints - нет памяти');

halt(1);

end;

(* Инициализация структуры *)

(* Вначале укажем, что передаются пожелания о размерах: установим минимальный и начальный размеры. *)

win_size_hints^.flags:= PSize OR PMinSize;

(* Затем указываем требуемые границы. В нашем случае - создаем окно минимальным размером 300x200 пикселей и устанавливаем начальный размер в 400x250. *)

win_size_hints^.min_width:= 300;

win_size_hints^.min_height:= 200;

win_size_hints^.base_width:= 400;

win_size_hints^.base_height:= 250;

(* Передаем пожелания о размерах оконному менеджеру. *)

XSetWMNormalHints(display, win, win_size_hints);

(* В конце необходимо освободить память из-под структуры. *)

XFree(win_size_hints);

Дополнительные параметры окна: способ работы с клавиатурой, вид и положение пиктограммы. Идентифицируется атомом XA_WM_HINTS и имеет тип XA_WM_HINTS. Данные свойства - структура типа TXWMHints. Для задания свойства используется процедура XSetWMHints(). Структура типа XWMHints, передаваемая функции XSetWMHints(), должна быть подготовлена с помощью XAllocWMHints():

var

win_hints: PXWMHints;

icon_pixmap: TPixmap;

const

icon_bitmap_width=20;

icon_bitmap_height=20;

(* Определим битовое изображение в формате Х - оно может быть создано программой xpaint *)

icon_bitmap_bits: array [0…59] of byte = (

$60, $00, $01, $b0, $00, $07, $0c, $03, $00, $04, $04, $00,

$c2, $18, $00, $03, $30, $00, $01, $60, $00, $f1, $df, $00,

$c1, $f0, $01, $82, $01, $00, $02, $03, $00, $02, $0c, $00,

$02, $38, $00, $04, $60, $00, $04, $e0, $00, $04, $38, $00,

$84, $06, $00, $14, $14, $00, $0c, $34, $00, $00, $00, $00

);

win_hints:= XAllocWMHints();

if (win_hints=nil) then begin

writeln('XAllocWMHints - нет памяти');

halt(1);

end;

(* установим пожелания о состоянии окна, позиции его иконки и ее виде *)

win_hints^.flags:= StateHint OR IconPositionHint OR IconPixmapHint;

(* Загрузим заданное битовое изображение и создадим из него пиксельную карту Х. *)

icon_pixmap:= XCreateBitmapFromData(display, win, PChar(icon_bitmap_bits), icon_bitmap_width, icon_bitmap_height);

if (icon_pixmap=nil) then begin

writeln('XCreateBitmapFromData: ошибка создания пиксмапа');

halt(1);

end;

(* Затем детализируем желаемые изменения. *)

(* в нашем случае - сворачиваем окно, определяем его иконку и устанавливаем позицию иконки в левом верхнем углу экрана. *)

win_hints^.initial_state:= IconicState;

win_hints^.icon_pixmap:= icon_pixmap;

win_hints^.icon_x:= 0;

win_hints^.icon_y:= 0;

(* Передаем пожелания оконному менеджеру. *)

XSetWMHints(display, win, win_hints);

(* В конце необходимо освободить память из-под структуры. *)

XFree(win_hints);

Получить данные свойства можно с помощью XGetWMHints().

Атрибут, характеризующий "временное" окно. Идентифицируется атомом XA_WM_TRANSIENT_FOR и имеет тип XA_STRING. Свойство задается для окон, появляющихся на экране для выполнения вспомогательных функций (диалоги, меню). Такие объекты рассматриваются менеджером по особому. Например, он может не добавлять к окну заголовок и рамку. Данные свойства - идентификатор окна родительского по отношению к данному. Задается свойство с помощью процедуры XSetTransientForHint().

Имена программы и ее класса , идентифицируется атомом XA_WM_CLASS и имеет тип XA_STRING. Данные свойства - структура типа TXClassHints. Задается свойство с помощью процедуры XSetClassHint() и может быть получено с помощью XGetClassHint().

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


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

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




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


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


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

Напишите свой комментарий
x