LinuxSir.cn,穿越时空的Linuxsir!

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

关于GTK使用的一个问题

[复制链接]
发表于 2003-7-29 10:53:32 | 显示全部楼层 |阅读模式
我在用GTK编程
为了把一个clist组件中的一条信息添加到另一个clist中,我用了如下方法

char *string
string的内容由clist1的select row信号触发后,用get_clist_get_text()
函数获取

然后用gtk_clist_append(GTK_CLIST(clist2),string)添加

但是结果不正确

后来参考一些例子
改为:
char *buf[2];
buf[0]=string;
gtk_clist_append(GTK_CLIST(clist2),buf);
结果仍然不正确

哪位高手能指点一下?
发表于 2003-7-29 22:29:50 | 显示全部楼层
加个断点看看
有没有进到这句
 楼主| 发表于 2003-7-30 12:36:16 | 显示全部楼层
执行是肯定的了,昨天试了一个通宵,没搞定,程序基本是这样的:

char *material_refused=NULL;(全局变量)
.....

void
on_selected_material_clist_select_row
(GtkCList        *clist,.....
{       ............
gtk_clist_get_text(GTK_CLIST(clist),row,column,&material_refused);
       .............
}

void
on_material_refuse_one_button_clicked
(GtkButton       *button  .....)
{         ........
      if(material_refused)
          ........
      gtk_clist_append(GTK_CLIST(clist_available),&material_refused);
      material_refused=NULL;
}                        
编绎没有任何错误和警告,但运行结果不正确。
 楼主| 发表于 2003-7-30 12:52:56 | 显示全部楼层
执行结果是,
select row 信号发出时,gtk_clist_get_text()函数执行
material_refused能被正确赋值,可以用printf()函数打出来
而press button信号发出时,gtk_clist_append()函数能执行,但结果不是预期的结果。是混乱的,可能是另外的文本有时还是乱码的东西。

我想了很久,也许原因是以上两个函数的参数都是指向字符指针的指针
get函数,把文本内容地址赋给material_refused这个指向字串的指针

而append函数在用material_refused这个指针的时候用的是这个指针的地址,而不是直接用的指向字串的指针(这个函数参数要求是指向字串指针的指针),然后在决定到底是什么字串的时候出了错,我想不出为什么为出错

我试过如果,我仅仅用material_refused="this is test"赋值
然后调用append函数,就能正确显示“this is test”
但用get函数获得的material_refused就是不能达到设计目的

真是怪了,大侠给分析分析吧
 楼主| 发表于 2003-7-30 15:54:40 | 显示全部楼层
经人指点,已经解决问题了,感谢大家关注和帮助
其实我贴在这里的东西不涉及错误所在,ft,自己太菜,错儿都找不着地方

真正有问题的地方是我在用gtk_clist_append()之前, 调用了clear和
重新填写那个clist,这样,再调用时,指针指的内容已经改变,或是其他行,或是不可知的东西

现在我只是把 gtk_clist_appedn()移到clear,重填操作前面去,就完全正确了
呵呵

再次谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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