组合程序
我已经写好两个简单的gtk程序,现在想把它们组合起来顺序执行(第一个执行完后,执行第二个),请问如何操作?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我已经写好两个简单的gtk程序,现在想把它们组合起来顺序执行(第一个执行完后,执行第二个),请问如何操作?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
你可以吧两个程序的代码整合到一个中嘛,
比如第一程序执行完就开始地二个程序的第一个窗口!
这个吗?
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等库。