QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1188|回复: 5

晕,Gtk的Window可不可以阻塞啊?

[复制链接]
发表于 2005-7-2 00:09:09 | 显示全部楼层 |阅读模式
请教一下,我要写一个弹出窗体,而且要求该窗体没有销毁前创建这个窗体的代码停止执行,也就是要像一个dialog那样:
[code:1]
t_dialog = gtk_message_dialog_new(...);
gtk_dialog_run(GTK_DIALOG(t_dialog)); //停在这里,等窗体销毁后继续
gtk_widget_destroy(t_dialog);
[/code:1]
能不能使一个window有这种特点呢?
发表于 2005-7-3 18:15:51 | 显示全部楼层
dialog里也用gtk_main()
回复

使用道具 举报

 楼主| 发表于 2005-7-3 22:30:55 | 显示全部楼层
是不是Gtk不直接支持(比如以某个属性来设定)?
看了一下gtk_dialog_run的代码,发现要用到以下这些函数:
[code:1]
ri.loop = g_main_loop_new (NULL, FALSE);

GDK_THREADS_LEAVE ();  
g_main_loop_run (ri.loop);
GDK_THREADS_ENTER ();  

g_main_loop_unref (ri.loop);
[/code:1]
天啊,对Gtk的认识还没有到这种层次,用这些函数手工使一个window阻塞看来难啊!
回复

使用道具 举报

发表于 2005-7-4 09:05:10 | 显示全部楼层
不懂 其实楼主自己不是写出了解释了么?
回复

使用道具 举报

发表于 2005-7-4 10:29:16 | 显示全部楼层
如果你的代码没有写成多进程的,那么,只要你把对话框设置为模态对话框住窗口就不会在对话框结束前响应其它事件。(基本达到了你要的效果)

如果你的代码写成了多进程的,那你就在 gtk_dialog_run 之前自己加锁咯。
回复

使用道具 举报

 楼主| 发表于 2005-7-5 16:01:42 | 显示全部楼层
谢谢各位啦!我是想让一个window具有dialog那样的特点:创建窗体的代码停止,一直等到这个窗体被关闭再继续执行。设置为模态只会使其他窗体不响应事件,不能使一个window像对一个dialog执行gtk_dialog_run()那样使创建这个窗体的代码停止并等待这个窗体关闭
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 17:18 , Processed in 0.059074 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表