免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3363 | 回复: 2
打印 上一主题 下一主题

组合程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-07 09:06 |只看该作者 |倒序浏览
7可用积分
我已经写好两个简单的gtk程序,现在想把它们组合起来顺序执行(第一个执行完后,执行第二个),请问如何操作?

论坛徽章:
0
2 [报告]
发表于 2008-10-07 13:56 |只看该作者
这个吗?
GTK+的事件与信号处理

GTK是一个事件驱动的工具集,一个GTK应用通常在gtk_main上休眠直到一个事件发生,这时控制被传递给合适的函数。

信号绑定

gint gtk_signal_connect( GtkObject *object,
                         gchar *name,
                         GtkSignalFunc func,
                         gpointer func_data );


void gtk_signal_disconnect( GtkObject *object,
                            gint id );


void gtk_signal_handler_block( GtkObject *object,
                               guint      handler_id );
                              
                              
void gtk_signal_handler_unblock( GtkObject *object,
                                 guint      handler_id );


信号被处理的过程

信号发出

    * 信号发出(signal emission)特指GTK为一个特定的对象和一个特定的信号执行所有的处理程序的过程;

    * 绑定在一个信号上的所有处理程序的执行顺序与它们被设置的次序一致;

    * 一次信号发出的返回值是最后一个被执行的处理程序的返回值;

    * 由于所有的事件信号都是GTK_RUN_LAST类型,因此它将是最后执行的缺省处理程序,除非你使用gtk_signal_connect_after();

信号传播

    * 从事件发生的那个控件开始;

    * 发出一个普通的事件“event”。如果它的信号处理程序返回TRUE,则停止一切处理;

    * 否则,发出一个特定的"button_press_event"信号。如果返回TRUE,则停止处理;

    * 否则,将控制转移到这个控件的父亲那里,继续上面的两步;

    * 持续进行,直到某个处理程序返回TRUE,和到达顶级控件。

注意事项

1. 当有一个缺省处理程序时,您的处理程序的返回值可能不产生任何作用,除非您使用gtk_signal_connect_after()来绑定它;

2. 为阻止缺省处理程序执行,您需要:

    * 用gtk_signal_connect()来绑定;

    * 用gtk_signal_emit_stop_by_name()来停止信号继续传播。

3. 当GTK+不够用时,可以考虑使用GDK等库。

论坛徽章:
0
3 [报告]
发表于 2008-11-17 14:30 |只看该作者
你可以吧两个程序的代码整合到一个中嘛,
比如第一程序执行完就开始地二个程序的第一个窗口!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP