| |
Функции ввода обрабатываются на уровне Gdk. Они вызываются когда данный дескриптор файла готов для чтения или записи. Они особенно удобны для сетевых приложений.
Для добавления функции ввода, вы указываете дескриптор файла, за которым надо следить, состояние, которого вы хотите дождаться (готовность для чтения или записи), и пару обработчик/данные. Список функций 3..16 показывает это API. Функции могут быть удалены по тэгу, возвращаемому "gdk_input_add()". В отличие от функций выхода, таймаута и простоя, в данном случае можно безопасно вызывать "gdk_input_remove()" изнутри функции ввода; Gtk+ не будет в середине пробега по списку функций ввода.
Для указания условия (условий), которых необходимо дождаться, используйте флаги GdkInputCondition: "GDK_INPUT_READ", "GDK_INPUT_WRITE" и "GDK_INPUT_EXCEPTION". Вы можете объединить несколько флагов вместе операцией OR. Эти флаги соответствуют трем наборам дескриптора файла, передаваемых в системный вызов select(); детали смотрите в хорошей книге по программированию в UNIX. Если встретилось любое из указанных условий, вызывается функция ввода.
Обработчик должен выглядеть примерно так:
typedef void (*GdkInputFunction) (gpointer data, gint source_fd, GdkInputCondition condition);Он получает данные, дескриптор файла, за которым следит, и условия, которые привели к вызову (вероятны подмножества условий, за которыми вы следите).
gint gdk_input_add(gint source_fd, GdkInputCondition condition, GdkInputFunction function, gpointer data) void gdk_input_remove(gint tag)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |