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

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

Жанры

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

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

Шрифт:

 WND_MIN_HGH=50;

 WND_BORDER_WDT=5;

 WND_TITLE='Hello!';

 WND_ICON_TITLE='Hello!';

 PRG_CLASS='Hello!';

(* SetWindowManagerHints - процедура передает информацию о свойствах программы менеджеру окон. *)

procedure SetWindowManagerHints(

 prDisplay: PDisplay; (*Указатель на структуру TDisplay *)

 psPrgClass: PChar; (*Класс программы *)

 argv: PPChar; (*Аргументы программы *)

 argc: integer; (*Число аргументов *)

 nWnd: TWindow; (*Идентификатор окна *)

x, (*Координаты левого верхнего *)

y, (*угла окна *)

nWidth,

nHeight, (*Ширина и высота окна *)

nMinWidth,

nMinHeight:integer; (*Минимальные ширина и высота окна *)

 psTitle: PChar; (*Заголовок окна *)

 psIconTitle: PChar; (*Заголовок пиктограммы окна *)

 nIconPixmap: TPixmap (*Рисунок пиктограммы *)

);

var

 rSizeHints: TXSizeHints; (*Рекомендации о размерах окна*)

 rWMHints: TXWMHints;

 rClassHint: TXClassHint;

 prWindowName, prIconName: TXTextProperty;

begin

if (XStringListToTextProperty(@psTitle, 1, @prWindowName)=0) or

(XStringListToTextProperty(@psIconTitle, 1, @prIconName)=0) then

 begin

writeln('No memory!');

halt(1);

end;

 rSizeHints.flags:= PPosition OR PSize OR PMinSize;

 rSizeHints.min_width:= nMinWidth;

 rSizeHints.min_height:= nMinHeight;

 rWMHints.flags:= StateHint OR IconPixmapHint OR InputHint;

 rWMHints.initial_state:= NormalState;

 rWMHints.input:= True;

 rWMHints.icon_pixmap:= nIconPixmap;

 rClassHint.res_name:= argv[0];

 rClassHint.res_class:= psPrgClass;

 XSetWMProperties(prDisplay, nWnd, @prWindowName, @prIconName, argv, argc, @rSizeHints, @rWMHints, @rClassHint);

end;

(* main - основная процедура программы *)

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

var

 prDisplay: PDisplay; (* Указатель на структуру Display *)

 nScreenNum: integer; (* Номер экрана *)

 prGC: TGC;

 rEvent: TXEvent;

 nWnd: TWindow;

begin

(* Устанавливаем связь с сервером *)

 prDisplay:= XOpenDisplay(nil);

if prDisplay = nil then begin

writeln('Can not connect to the X server!');

halt (1);

 end;

 (* Получаем номер основного экрана *)

 nScreenNum:= XDefaultScreen(prDisplay);

 (* Создаем окно *)

 nWnd:= XCreateSimpleWindow(prDisplay, XRootWindow (prDisplay, nScreenNum), WND_X, WND_Y, WND_WDT, WND_HGH, WND_BORDER_WDT, XBlackPixel (prDisplay, nScreenNum),

 XWhitePixel (prDisplay, nScreenNum));

 (* Задаем рекомендации для менеджера окон *)

 SetWindowManagerHints(prDisplay, PRG_CLASS, argv, argc, nWnd, WND_X, WND_Y, WND_WDT, WND_HGH, WND_MIN_WDT, WND_MIN_HGH, WND_TITLE, WND_ICON_TITLE, 0);

 (* Выбираем события, обрабатываемые программой *)

 XSelectInput(prDisplay, nWnd, ExposureMask OR KeyPressMask);

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

 XMapWindow(prDisplay, nWnd);

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

while (true) do begin

XNextEvent(prDisplay, @rEvent);

case (rEvent.eventtype) of

Expose:

begin

(* Запрос на перерисовку *)

if (rEvent.xexpose.count ‹› 0) then continue;

prGC:= XCreateGC (prDisplay, nWnd, 0, nil);

XSetForeground(prDisplay, prGC, XBlackPixel (prDisplay, 0));

XDrawString(prDisplay, nWnd, prGC, 10, 50, 'Hello, world!', strlen ('Hello, world!'));

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

Слово воина

Прозоров Александр Дмитриевич
1. Ведун
Фантастика:
фэнтези
8.91
рейтинг книги
Слово воина

"Фантастика 2025-58". Компиляция. Книги 1-21

Альтмарк Лев
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2025-58. Компиляция. Книги 1-21

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

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

Чужой ребенок

Зайцева Мария
1. Чужие люди
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Чужой ребенок

Цикл романов "Целитель". Компиляция. Книги 1-17

Большаков Валерий Петрович
Целитель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цикл романов Целитель. Компиляция. Книги 1-17

Истина и красота. Всемирная история симметрии.

Стюарт Иэн
Элементы
Научно-образовательная:
математика
5.75
рейтинг книги
Истина и красота. Всемирная история симметрии.

«О» - значит омут

Графтон Сью
Кинси Милхоун
Детективы:
крутой детектив
5.00
рейтинг книги
«О» - значит омут

Налог на прибыль

Климова Маргарита Аркадьевна
Деловая литература:
бухучет и аудит
5.00
рейтинг книги
Налог на прибыль

Посольство

Уоллер Лесли
Детективы:
политические детективы
5.00
рейтинг книги
Посольство

Я царь. Книга XXVIII

Дрейк Сириус
28. Дорогой барон!
Фантастика:
боевая фантастика
аниме
попаданцы
5.60
рейтинг книги
Я царь. Книга XXVIII

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Сотворение миров (сборник)

Ларионова Ольга Николаевна
Фантастика:
научная фантастика
5.00
рейтинг книги
Сотворение миров (сборник)