Библиотека knigago >> Компьютеры: Языки и системы программирования >> Другие языки и системы программирования >> Программирование в X Window средствами Free Pascal


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2078, книга: Грабеж средь бела дня
автор: Валерий Борисович Гусев

Детские остросюжетные "Грабеж средь бела дня" - интригующий и захватывающий детектив для юных читателей, написанный В. Гусевым. История разворачивается на фоне летних каникул в живописном поселке. Главные герои, школьники Юра и Володя, становятся невольными свидетелями дерзкого ограбления сберкассы. Присутствовавшие на месте преступления, они оказываются под прицелом преступников. Дети вынуждены разработать дерзкий план спасения, чтобы не стать соучастниками преступления. Юра и...

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

Программирование в X Window средствами Free Pascal
Книга - Программирование в X Window средствами Free Pascal.  А П Полищук , С А Семериков  - прочитать полностью в библиотеке КнигаГо
Название:
Программирование в X Window средствами Free Pascal
А П Полищук , С А Семериков

Жанр:

Другие языки и системы программирования

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

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

Аннотация к этой книге отсутствует.

Читаем онлайн "Программирование в X Window средствами Free Pascal". [Страница - 4]

данные.

Некоторые свойства и соответствующие им атомы являются предопределенными и создаются в момент инициализации сервера. Этим атомам соответствуют символические константы, определенные в файлах-заголовках библиотеки Xlib. Эти константы начинаются с префикса XA_.

1.1.6 Первый пример

Продолжая традиции многих изданий, посвященных программированию, начнем с программы, рисующей на экране строку "Hello, world!". В этом примере приведены основные шаги, необходимые для работы в X Window.

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 необходимо добавить в диалог "Команды" следующие установки:

Книгаго: Программирование в X Window средствами Free Pascal. Иллюстрация № 3
На рис. 1.3 показан внешний вид приложения после его --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.