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

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

Жанры

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

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

Шрифт:

 create_simple_window:=win;

end;

//void main(int argc, char* argv[])

var

 display: PDisplay; (* указатель на структуру дисплея Х *)

 screen_num: integer; (* количество экранов для размещения окон *)

 win: TWindow; (* дескриптор создаваемого окна *)

 display_width, display_height: word; (* высота и ширина Х дисплея *)

 win_width, win_height: word; (* высота и ширина нового окна *)

 display_name: array [0…30] of Char;

 name: string;

 i: integer;

 win_attr: TXWindowAttributes;

 xx, y, scr_x, scr_y: integer;

 child_win: TWindow;
(* переменная для хранения дескриптора родительского окна *)

 parent_win: TWindow;
(* эта переменная будет хранить дескриптор корневого окна 
экрана, на котором отображено наше окно *)

 root_win: TWindow; (* эта переменная будет хранить массив дескрипторов дочерних окон нашего окна, *)

 child_windows: PWindow; (* а эта - их количество *)

 num_child_windows: integer;

begin

 name:= getenv('DISPLAY'); (* имя Х дисплея *)

 for i:=1 to byte(name[0]) do 
display_name[i-1]:=name[i];

 display_name[byte(name[0])]:=#0;

 (* устанавливаем соединение с Х сервером *)

 display:= XOpenDisplay(display_name);

 if (display = NIL) then begin

writeln(paramstr(0),': не могу соединиться с Х сервером ',
display_name);

halt(1);

 end;

 (* получаем геометрию экрана по умолчанию для нашего дисплея *)

 screen_num:= XDefaultScreen(display);

 display_width:= XDisplayWidth(display, screen_num);

 display_height:= XDisplayHeight(display, screen_num);

 (* создаем новое окно в 1/9 площади экрана *)

 win_width:= (display_width div 3);

 win_height:= (display_height div 3);

 (* отладочная печать в стандартный вывод *)

 writeln('ширина окна - ', win_width, '; высота - ', win_height);

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

 win:= create_simple_window(display, win_width, win_height, 0, 0);

 XFlush(display);

 (* отдохнем после трудов праведных *)

 delay(3000);

 (* пример изменения размеров окна *)

 begin

(* в цикле уменьшаем окно *)

for i:=0 to 39 do begin

dec(win_width,3);

dec(win_height,3);

XResizeWindow(display, win, win_width, win_height);

XFlush(display);

delay(20);

end;

(* в цикле увеличиваем окно *)

for i:=0 to 39 do begin

inc(win_width,3);

inc(win_height,3);

XResizeWindow(display, win, win_width, win_height);

XFlush(display);

delay(20);

end;

 end;

 delay(1000);

 (* пример перемещения окна *)

 begin

(* вначале получаем текущие атрибуты окна *)

XGetWindowAttributes(display, win, @win_attr);

xx:= win_attr.x;

y:= win_attr.y;

(* затем находим окно родителя *)

begin

(* выполним запрос необходимых значений *)

XQueryTree(display, win,
@root_win,
@parent_win,
@child_windows, @num_child_windows);

(* мы должны освободить список дочерних дескрипторов, так как он был динамически выделен XQueryTree *)

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

Хроники Тамула. Трилогия

Эддингс Дэвид
Тамули
Фантастика:
фэнтези
6.25
рейтинг книги
Хроники Тамула. Трилогия

Сумерки божков

Амфитеатров Александр Валентинович
1. Романы
Проза:
русская классическая проза
5.00
рейтинг книги
Сумерки божков

Грусть белых ночей

Науменко Иван Яковлевич
Библиотека "Дружбы народов"
Проза:
советская классическая проза
5.00
рейтинг книги
Грусть белых ночей

Миллион приключений (сборник)

Булычев Кир
15. Отцы-основатели - Русское пространство. Кир Булычев - Собрание сочинений
Фантастика:
научная фантастика
7.00
рейтинг книги
Миллион приключений (сборник)

Т. 13 Число зверя

Хайнлайн Роберт Энсон
13. Отцы-основатели. Весь Хайнлайн
Фантастика:
научная фантастика
7.00
рейтинг книги
Т. 13 Число зверя

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

12 великих комедий

Шекспир Уильям
Вожди Советского Союза
Проза:
классическая проза
6.25
рейтинг книги
12 великих комедий

Новая хронология Греции

Фоменко Анатолий Тимофеевич
Научно-образовательная:
история
5.00
рейтинг книги
Новая хронология Греции

Я не царь. Книга XXIV

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

Газлайтер. Том 40

Володин Григорий Григорьевич
40. История Телепата
Фантастика:
альтернативная история
аниме
попаданцы
6.25
рейтинг книги
Газлайтер. Том 40

Одержимый

Джеймс Питер
Top Thriller
Детективы:
триллеры
маньяки
8.67
рейтинг книги
Одержимый

См. статью «Любовь»

Гроссман Давид
Проза:
современная проза
5.00
рейтинг книги
См. статью «Любовь»

Голубой бриллиант (Сборник)

Шевцов Иван Михайлович
Проза:
современная проза
4.50
рейтинг книги
Голубой бриллиант (Сборник)

Старый, но крепкий 2

Крынов Макс
2. Культивация без насилия
Фантастика:
рпг
уся
эпическая фантастика
5.00
рейтинг книги
Старый, но крепкий 2