Linux 版 (精华区)

发信人: netiscpu (平淡是真), 信区: Linux
标  题: GTK入门导引(15)
发信站: 紫 丁 香 (Mon Dec 14 14:46:50 1998), 转信


发信人: hey (吟风·悠游98), 信区: Unix
标  题: GTK入门导引(15)
发信站: 华南网木棉站 (Tue Nov 10 11:17:34 1998), 转信

15. Timeouts, IO及Idle函数

15.1 Timeouts 

您可能会想要在gtk_man idle时, 做一些事情. 你有好几个选择. 使用以下这些
函数可以产生一个timeout函数, 它每间隔一阵子就会去呼叫您的函数. 

    gint gtk_timeout_add (guint32 interval,
                          GtkFunction function,
                          gpointer data);

第一个参数是每间隔interval milliseconds会去呼叫您的函数. 第二个是该函数.
第三个是要传给该函数的资料. 返回值则为该行程的"标签". 

    void gtk_timeout_remove (gint tag);

您可以在您的timeout函数返回zero或FALSE来停止timeout函数. 这就是说您
必须返回非零值, 如TRUE. 

你的callback函数必须像这样: 

    gint timeout_callback (gpointer data);

15.2 监督IO 

GTK另一个漂亮的功能是有办法去检查一个file descriptor的资料. (as
returned by open(2) or socket(2)). 这个在网路软体上很有用: 

    gint gdk_input_add (gint source,
                        GdkInputCondition condition,
                        GdkInputFunction  function,
                        gpointer data);

第一个参数是您想看的file descriptor, 第二个是你要GDK去看那一项, 可以是
以下几项: 

GDK_INPUT_READ - 当file descriptor有资料的时候会去呼叫您的函数. 

GDK_INPUT_WRITE - 当您的file descriptor可以被写入资料的时候. 

第三个当然是callback函数. 第四个是要传给callback的资料. 

返回值是可用来停止监督的一个"标签". 

    void gdk_input_remove (gint tag);

当您的callback函数返回zero或FALSE时, GTK会停止呼叫您的callback函数.

15.3 Idle函数 

当什么事情都不发生时, 您要呼叫一个函数时要怎么办? 

    gint gtk_idle_add (GtkFunction function,
                       gpointer data);

当什么事都不发生时, GTK会去呼叫这个函数. 

    void gtk_idle_remove (gint tag);

这个不用解释了吧. 您若在idle函数返回zero或FALSE会停止idle函数的运行. 

--
        6m3m┌───────────────────────┐0m
        6m3m│     4m疾如风,徐如林,侵掠如火,不动如山       3m│4m 0m
        6m3m└───────────────────────┘0m4m 0m
          4m                                                 0m

m;32m※ 来源:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.38.212.66]m
--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--

                              Enjoy Linux!
                          -----It's FREE!-----

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.330毫秒