The OpenNET Project / Index page

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

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

3.4.5 Функции ввода

Функции ввода обрабатываются на уровне 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);
Он получает данные, дескриптор файла, за которым следит, и условия, которые привели к вызову (вероятны подмножества условий, за которыми вы следите).
Список функций 3..16: Функции ввода
"#include "<gdk/gdk.h>
gint gdk_input_add(gint source_fd, GdkInputCondition condition,
                   GdkInputFunction function, gpointer data)
void gdk_input_remove(gint tag)

Linux Land
2000-09-15



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

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