Читаем Программирование в X Window средствами Free Pascal полностью

Имя пиктограммы. Идентифицируется атомом XA_WM_ICONNAME и имеет тип "TEXT". Данные свойства - структура TXTextProperty. Для задания свойства используется процедура XSetIconName (XSetWMIconName). Получить его можно с помощью XGetIconName (XGetWMIconName).

Рекомендации (hints) о геометрии окна. Идентифицируется атомом XA_WM_NORMAL_HINTS и имеет тип XA_WM_SIZE_HINTS. Данные свойства - структура типа TXSizeHints. Для задания свойства используется процедура XSetNormalHints.

В ряде случаев стоит сообщить оконному менеджеру о том, какой размер окна мы хотим получить, и в каких пределах будут изменяться его размеры. Например, для терминальной программы (такой, как xterm), хотелось бы, чтобы окно всегда содержало полное количество строк и столбцов. В других случаях нежелательно давать возможность менять размер окна (например, в диалоговых окнах). Эти пожелания можно передать оконному менеджеру, хотя ничто не помешает ему их проигнорировать. Для этого необходимо создать структуру данных, заполнить ее необходимыми данными и затем использовать функцию XSetWMNormalHints:

(* указатель на структуру рекомендаций о размерах. *)

var

 win_size_hints: PXSizeHints;

 win_size_hints:= XAllocSizeHints;

 if (win_size_hints=nil) then begin

  writeln('XAllocSizeHints - нет памяти');

  halt(1);

 end;

 (* Инициализация структуры *)

 (* Вначале укажем, что передаются пожелания о размерах: установим минимальный и начальный размеры. *)

 win_size_hints^.flags:= PSize OR PMinSize;

 (* Затем указываем требуемые границы. В нашем случае - создаем окно минимальным размером 300x200 пикселей и устанавливаем начальный размер в 400x250. *)

 win_size_hints^.min_width:= 300;

 win_size_hints^.min_height:= 200;

 win_size_hints^.base_width:= 400;

 win_size_hints^.base_height:= 250;

 (* Передаем пожелания о размерах оконному менеджеру. *)

 XSetWMNormalHints(display, win, win_size_hints);

 (* В конце необходимо освободить память из-под структуры. *)

 XFree(win_size_hints);

Дополнительные параметры окна: способ работы с клавиатурой, вид и положение пиктограммы. Идентифицируется атомом XA_WM_HINTS и имеет тип XA_WM_HINTS. Данные свойства - структура типа TXWMHints. Для задания свойства используется процедура XSetWMHints. Структура типа XWMHints, передаваемая функции XSetWMHints, должна быть подготовлена с помощью XAllocWMHints:

var

 win_hints: PXWMHints;

 icon_pixmap: TPixmap;

const

 icon_bitmap_width=20;

 icon_bitmap_height=20;

(* Определим битовое изображение в формате Х - оно может быть создано программой xpaint *)

 icon_bitmap_bits: array [0…59] of byte = (

  $60, $00, $01, $b0, $00, $07, $0c, $03, $00, $04, $04, $00,

  $c2, $18, $00, $03, $30, $00, $01, $60, $00, $f1, $df, $00,

  $c1, $f0, $01, $82, $01, $00, $02, $03, $00, $02, $0c, $00,

  $02, $38, $00, $04, $60, $00, $04, $e0, $00, $04, $38, $00,

  $84, $06, $00, $14, $14, $00, $0c, $34, $00, $00, $00, $00

 );

 win_hints:= XAllocWMHints;

 if (win_hints=nil) then begin

  writeln('XAllocWMHints - нет памяти');

  halt(1);

 end;

 (* установим пожелания о состоянии окна, позиции его иконки и ее виде *)

 win_hints^.flags:= StateHint OR IconPositionHint OR IconPixmapHint;

 (* Загрузим заданное битовое изображение и создадим из него пиксельную карту Х. *)

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT