событияв дополнение к механизму сигналов, описанному выше, есть ряд событий, которые отражают механизм событий x. обратные вызовы также могут быть связаны с событиями. вот эти события: чтобы ассоциировать функцию обратного вызова с одним из этих событий нужно использовать функцию g_signal_connect(), как описано выше, в качестве параметра нужно использовать название одного из событий. формат функции обратного вызова для событий имеет отличия от аналогичных для сигналов:
gdkevent это c объединение(union) структур, тип которых зависит от выбранного события. для того чтобы понять какое событие произошло каждая из возможных альтернатив имеет свой тип, который отражает произошедшее событие. многие компоненты структуры событий зависят от типа события. возможные варианты типов событий:
так, для ассоциации функции обратного вызова с событием можно использовать следующее:
это предполагает что кнопка(button) это кнопка виджета (button widget). когда курсор находится на кнопке и кнопка мыши нажата, то вызывается функция button_press_callback(). эта функция может быть объявлена так:
обратите внимание, что мы можем объявить второй аргумент как тип gdkeventbutton, поскольку мы знаем, какое событие произойдет для той функции, которая будет вызвана. значение возвращенное функцией указывает механизму обработки событий gtk о дальнейших действиях. возвращенное true указывает на прекращение дальнейшего выполнения события. возвращенное false продолжает нормальное выполнение события. для более подробной информации смотрите секцию advanced event and signal handling. детально типы данных gdkevent, рассматриваются в gdk event types. gdk selection и drag-and-drop apis также создают множество событий которые отражены сигналами gtk. смотрите signals on the source widget и signals on the destination widget для детального изучения функций обратного вызова сигналов:
|