Аллен Питер В.
Шрифт:
Сначала мы подключаем заголовочный файл
Обратите внимание, что виджит объявлен, но работать с ним пока нельзя. Сначала (обязательно до вызова первой GTK-функции) нужно вызвать инициализирующую функцию gtk_init и передать ей два два параметра — аргументы функции main. После того, как библиотека инициализирована, нужно вызвать функцию gtk_window_new, которая создает окно (напомню, что пока окно объявлено, но не создано). Теперь, когда виджит окна создан, можно установить его свойства и определить реакцию на сигналы. Установим свойство Title (заголовок) окна. Это делается с помощью функции gtk_window_set_title:
Теперь можно отобразить наше окно:
Чтобы наше приложение могло реагировать на события оконной среды (например, щелчок мыши), нужно вызвать функцию gtk_main. Функции gtk_init и gtk_main должны присутствовать в любой GTK-программе.
Теперь откомпилируем наше приложение. Для этого введем следующую команду в командной строке:
Флаги
Запустим нашу программу в эмуляторе терминала X Window (или оконной среды GNOME/KDE):
Вы увидите окно, изображенное на рис. 23.1.
Рис. 23.1. Простое окно
Теперь закроем окно и перейдем к терминалу: окно закрыто, мы его больше не видим, а терминал не освобожден. Наша программа не реагирует на событие закрытия окна. По идее, когда графическая среда закрывает окно, программа должна завершить свою работу. А наша программа этого не делает. Значит, нужно «научить» ее реагировать на события (сигналы) оконной системы. Для этого нажмите в терминале Ctrl+С и отредактируйте исходный текст программы следующим образом:
Листинг 23.3. Добавим реакцию на закрытие окна
Функция gtk_signal_connect устанавливает реакцию объекта
А что если нам при завершении работы программы нужно выполнить какие-нибудь специфические действия, например, удалить временные файлы? Тогда нужно написать свою функцию-обработчик события destroy (листинг 23.4).
Эта функция будет называется
Листинг 23.4. Добавляем собственную функцию-обработчик завершения работы