The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Сигналы

Далее, вы захотите узнать как реагировать, когда пользователь манипулирует виджетами. В этом простом приложении, есть две интересные вещи, которые могут произойти: пользователь может нажать на кнопку, или закрыть окно, используя рамку, предоставляемую оконным менеджером. Виджеты (на самом деле, все наследники GtkObject) испускают сигналы, когда происходит что-то интересное, и на что программа захочет ответить. Для ответа на сигнал, вы должны подключить обработчик к нему, то есть зарегистрировать функцию, которая будет вызываться тогда, когда сигнал испущен. Вот снова этот код:
  gtk_signal_connect(GTK_OBJECT(window), "delete_event",
                     GTK_SIGNAL_FUNC(delete_event_cb), NULL);
  gtk_signal_connect(GTK_OBJECT(button), "clicked",
                     GTK_SIGNAL_FUNC(button_click_cb), label);

"gtk_signal_connect()" определяет, за каким GtkObject следить, к какому сигналу подключиться, обработчик, который подключить, и, наконец, аргумент "user_data" -- это произвольный gpointer, который будет передан в обоработчик. Макрос "GTK_SIGNAL_FUNC()" транслирует обработчик в стандартную функцию; так как обработчики имеют разнообразие типов, альтернативой будут десятки вариантов "gtk_signal_connect()".

Gtk+ выполняет обильное количество проверок безопасности во время выполнения; макрос "GTK_OBJECT()" включает проверку типа в дополнение к транслирванию C, а "gtk_signal_connect()" проверит, действительно ли объект может испускать сигнал, который вы указали.


Linux Land
2000-09-15



Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру