Операції над вікнами - програмування x window засобами free pascal

1.1.9. Операції над вікнами

Маніпулювати вікнами можна не тільки за допомогою атрибутів: Xlib надає набір функцій для зміни їх розмірів, переміщення на екрані і в стеці вікон, згортання і т.п.

Перша пара операцій, які можна застосувати до вікна - Показати або приховати. Відображення вікна змушують вікно з'явитися на екрані, приховування призводить до видалення з екрану (хоча логічне вікно в пам'яті все ще існує). Наприклад, якщо у вашій програмі є діалогове вікно, замість створення його кожен раз по запиту користувача, ми можемо створити вікно один раз в прихованому режимі і, коли користувач запросить відкрити діалог, просто відобразити вікно на екрані. Коли користувач натискає "OK" або "Cancel", вікно ховається. Це значно швидше створення і знищення вікна, однак варто ресурсів, як на стороні клієнта, так і на стороні X сервера.

Відображення вікна може бути виконано за допомогою XMapWindow (). приховування - за допомогою XUnmapWindow (). Функція відображення змусить подія Expose послав програмі, якщо тільки вікно повністю не закрита іншими вікнами.

Деякі інші дії, яке можна виконати над вікнами - перемістити їх в іншу позиції. Це може бути виконано функцією XMoveWindow (). яка приймає нові координати вікна. Майте на увазі, що після переміщення вікно може бути частково прихованим іншими вікнами (або навпаки, відкрито ними), і таким чином, може бути згенеровано повідомлення Expose.

Змінити розмір вікна можна за допомогою функції XResizeWindow (). Ми можемо також об'єднати переміщення і зміна розмірів, використовуючи одну функцію XMoveResizeWindow ().

Всі наведені вище функції змінювали властивості одного вікна. Існує ряд властивостей, пов'язаних з даними вікном та іншими вікнами. Одне з них - порядок засилання в стек. порядок, в якому вікна розташовуються один над одним. Кажуть, що вікно переднього плану знаходиться на верху стека, а вікно заднього плану - на дні стека. Переміщення вікна на вершину стека здійснює функція XRaiseWindow (). переміщення вікна на дно стека - функція XLowerWindow ().

За допомогою функції XIconifyWindow () вікно може бути згорнуто. а за допомогою XMapWindow () - відновлено. Для того, щоб зрозуміти, чому для XIconifyWindow () немає зворотної функції, необхідно зауважити, що, коли вікно згортається, насправді воно ховається, а замість нього відображається вікно іконки. Таким чином, щоб відновити вихідне вікно, потрібно просто відобразити його знову. Іконка є насправді іншим вікном, яке просто тісно пов'язане сильно з нашим нормальним вікном - це не що інше стан нашого вікна.

Наступний приклад демонструє використання операцій над вікнами:
Додаток: Вихідний код програми winmove.pas