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

Здесь есть возможность читать онлайн «А. Полищук - Программирование в X Window средствами Free Pascal» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование в X Window средствами Free Pascal: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование в X Window средствами Free Pascal»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование в X Window средствами Free Pascal», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

uses x,xlib,x11,xutil,strings;

const

WND_X=0;

WND_Y=0;

WND_WDT=100;

WND_HGH=100;

WND_MIN_WDT=50;

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!'));

XFreeGC (prDisplay, prGC);

end;

KeyPress:

begin

(* Нажатие клавиши клавиатуры *)

XCloseDisplay(prDisplay);

halt(0);

end;

end;

end;

end.

Для сборки программы используется команда:

fpc hello.pas

Здесь fpc - имя исполняемого файла компилятора. Как правило, это символическая ссылка на реальное имя компилятора (например, ppc386).

В современных версиях UNIX для создания программных продуктов используются не только компиляторы командной строки, но и самые разнообразные интегрированные среды. Одной из наиболее удобных, по нашему мнению, является интегрированная среда разработки Анюта (Anjuta). Ее создатель - индийский программист Наба Кумар - позаботился о том, чтобы мы чувствовали себя в ней комфортно.

Для того, чтобы разрешить в Анюте поддержку русского языка, необходимо добавить в файл свойств этой программы (~/.anjuta/session.properties) строку

character.set=204

Для подключения компилятора FreePascal необходимо добавить в диалог "Команды" следующие установки:

На рис 13 показан внешний вид приложения после его запуска Рис 13 Окно - фото 3

На рис. 1.3 показан внешний вид приложения после его запуска.

Рис 13 Окно приложения xhello в среде KDE Программа использует ряд функций - фото 4

Рис. 1.3. Окно приложения xhello в среде KDE

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

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование в X Window средствами Free Pascal»

Представляем Вашему вниманию похожие книги на «Программирование в X Window средствами Free Pascal» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


libcat.ru: книга без обложки
Александр Цветков
libcat.ru: книга без обложки
Gene Wolfe
Отзывы о книге «Программирование в X Window средствами Free Pascal»

Обсуждение, отзывы о книге «Программирование в X Window средствами Free Pascal» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x