LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 849|回复: 7

gtk窗体程序处理信号的问题

[复制链接]
发表于 2005-1-18 18:07:47 | 显示全部楼层 |阅读模式
我有一个gtk窗体的程序,想接收另外一个进程给我发的信号,并且用对话框显示出来 。现在的问题是,信号我可以接收,但是不能用窗体处理,只能直接打印。我用gdb调试了,信号的接收和处理都正确,就是不知道问题出在哪里。
大侠帮忙看看,相关代码如下:

  1. void
  2. showmessage1(char *msg)
  3. {
  4.         GtkWidget *dialogshowmessage;
  5.         GtkLabel *labelmessage;
  6.         dialogshowmessage = create_dialogshowmessage();
  7.         gtk_widget_show(dialogshowmessage);
  8.         labelmessage = GTK_LABEL(lookup_widget(dialogshowmessage, "labelmessage"));
  9.         gtk_label_set_text(labelmessage,g_locale_to_utf8(msg, -1, NULL, NULL, NULL));
  10.         fprintf(stderr,"%s\n", msg);
  11. }
复制代码

以上函数,用来生成一个窗体,信号处理函数就 是直接调用这个函数。
等待指点,感激不尽
 楼主| 发表于 2005-1-19 10:45:56 | 显示全部楼层
今天问题莫名其妙的就解决了,直接运行昨天的程序就好了,
真是不懂。昨天我也重新启动了n次啊,始终不成功。今天一上班,瞬间成功。
奇怪啊
莫非这就是传说中的人品问题?
回复 支持 反对

使用道具 举报

发表于 2005-1-19 20:45:19 | 显示全部楼层
呵呵,哥们真逗
回复 支持 反对

使用道具 举报

发表于 2005-1-20 01:35:40 | 显示全部楼层
看了一二两贴,先不工作,然后突然工作,你不觉得这是BUG隐患吗?

另外:如果你得到了消息,那么一定可以用窗口显示出来。
但你没有给出你自己的create_dialogshowmessage源码,也许里面有问题?(可能性很小)
要命的是g_locale_to_utf8的调用,如果在某些locale下面使用了某些字符集,在进行UTF转换时极有可能发生转换错误,有可能造成“非法的Unicode字符“。
所以,建议还是utf转换后verify一下。
g_utf8_validate()
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-20 09:02:33 | 显示全部楼层
create_dialogshowmessage是用glade自己生成的,在别的地方显示没有任何问题。
现在程序已经完全正常,前天的错误也不能重现了,所以我也没有办法继续调。
另外,为什么会出现转换错误,您能给我解释一下么,我不懂~~

太感谢了
回复 支持 反对

使用道具 举报

发表于 2005-1-20 09:30:33 | 显示全部楼层
你可以写一个很简单的测试程序,直接调用你的方法。

你可以测试一下传入非en的字符。
回复 支持 反对

使用道具 举报

发表于 2005-1-20 09:58:29 | 显示全部楼层
编辑的原因
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-20 11:13:37 | 显示全部楼层
我传递的就是中文字符啊
没有问题
回复 支持 反对

使用道具 举报

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

本版积分规则

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