Программирование в 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 *)
Поделиться:
Популярные книги
Сердце Дракона. Том 10
10. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.14
рейтинг книги
Дюна
1. Хроники Дюны
Фантастика:
эпическая фантастика
9.43
рейтинг книги
Егерь. Системный зверолов
1. Зверолов
Фантастика:
рпг
уся
фэнтези
фантастика: прочее
попаданцы
6.50
рейтинг книги
Я царь. Книга XXVIII
28. Дорогой барон!
Фантастика:
боевая фантастика
аниме
попаданцы
5.60
рейтинг книги
Песчаный дьявол
1. Отряд «Сигма»
Приключения:
прочие приключения
8.87
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 34
34. История Телепата
Фантастика:
фэнтези
боевая фантастика
аниме
7.00
рейтинг книги
Ворон
Фантастика:
попаданцы
фэнтези
гаремник
5.00
рейтинг книги
Неучтенный элемент. Том 10
10. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Корабль Древних
2. Слияние
Фантастика:
научная фантастика
6.25
рейтинг книги
История всемирной литературы Т.6
Научно-образовательная:
история
культурология
литературоведение
6.25
рейтинг книги
Газлайтер. Том 8
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Романов. Том 1 и Том 2
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Воронцов. Перезагрузка
1. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.40
рейтинг книги
Дважды одаренный. Том III
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.40