免费注册 查看新帖 |

Chinaunix

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

entry的显示问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-21 10:32 |只看该作者 |倒序浏览
我截取了我程序的部分语句来给大家看为什么我向entry里输出内容,编译没有错误,等到输入数据的时候却输不出来呢,而且有如下的提示.请大家帮忙看一下,指点我该如何修改我的程序?
.......

unsigned char *pFrame;
union                                                 //定义一个共用体
{
char ch[4];
short sh[4];
unsigned ush[4];
int i[4];
}show_pack;


show_pack.ch[0]=pFrame[3];
Double=show_pack.ch[0]/2.0;
asprintf(&c,"%-5.3f",Double);
gtk_entry_set_text(GTK_ENTRY(entry_gyro_prate),c);


(app:5361): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' i n cast to `GtkEntry'

(app:5361): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): as sertion `GTK_IS_ENTRY (entry)' failed

多谢大家了!

论坛徽章:
0
2 [报告]
发表于 2006-07-21 15:33 |只看该作者
不知道你的  entry 和 c 是什么地方定义的呢?

论坛徽章:
0
3 [报告]
发表于 2006-07-21 16:54 |只看该作者
我的entry是在另一个文件里face.c里创建的,并且用extern声明为外部变量,在这个解码文件里用到的.
那个char *c是在解码函数里定义的.不知道这样做有问题吗?

论坛徽章:
0
4 [报告]
发表于 2006-07-23 10:03 |只看该作者
我收到你的消息了

你的 entry光有定义是不够的
你要确信 你在  set_text 的时候,entry已经被创建了
也就是说 ,object已经实例化了

软件的 错误 ,往往能让人发疯的
更何况我也是新手 ,而且看不到你的完成程序,所以,我就只好猜测你的错误了

以 gtk_entry_new()为例

这个函数是在函数内部给这个对象分配空间的
由于 C  语言的特性,你是不能用一个  一级指针从 函数中 返回新申请的 内存空间的
所以下面的代码是不可能让你获得新的entry  widget 的


  1. int create_entry(GtkWidget *entry)
  2. {
  3.    GtkWidget *widget = NULL;
  4.    widget  = gtk_entry_new();
  5.    entry = widget; /*试图用参数带回 新申请的 内存空间是 不可以的*/
  6.    return 0;;
  7. }

  8. int use_entry()
  9. {
  10.         GtkWidget *entry = NULL;
  11.        create_entry(entry);
  12.       /*在这里 ,entry 会仍然是 NULL*/
  13. }
复制代码



我 觉得你有可能是有这方面的错误
但是也不确信

在 本帖的 附件中有一个我修改过的 entry 的 例子
你看看entry该怎么用
文件名是 entry.c.tar.gz
解压办法: tar xvfz entry.c.tar.gz
编译方法 # gcc entry.c -o entry `pkg-config --cflags --libs gtk+-2.0`

entry.c.tar.gz

1.21 KB, 下载次数: 98

entry.c.tar.gz

论坛徽章:
0
5 [报告]
发表于 2006-07-23 15:56 |只看该作者
多谢,我看到了你的回复,也下载了你写的例子.但是我的程序好像没有你所说的问题啊!

论坛徽章:
0
6 [报告]
发表于 2006-07-23 16:24 |只看该作者
原帖由 我是一只鸟小小 于 2006-7-21 10:32 发表
我截取了我程序的部分语句来给大家看为什么我向entry里输出内容,编译没有错误,等到输入数据的时候却输不出来呢,而且有如下的提示.请大家帮忙看一下,指点我该如何修改我的程序?
.......

unsigned char *pFra ...



从你的错误来看,你对你的 “entry“ 的引用 应该是 有问题
而不是因为 让他显示字符串有问题

论坛徽章:
0
7 [报告]
发表于 2006-07-23 17:03 |只看该作者
引用?引用有问题?

    我的entry是在face.c文件里创建界面(window)时创建的并且声明为外部变量,然后就想把随时得到的数据显示在里面(此功能函数在另一个文件里callbacks.c里),这样做有什么问题呢?

[ 本帖最后由 我是一只鸟小小 于 2006-7-23 17:08 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-07-23 19:24 |只看该作者
(app:5361): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): as sertion `GTK_IS_ENTRY (entry)' failed


从这可以看出,你传给gtk_entry_set_text()的       指针不    是   指向   entry的

你现看看你的entry能不能显示出来
然后再让他显示  text  吧

具体我也不是很懂

论坛徽章:
0
9 [报告]
发表于 2006-07-24 16:37 |只看该作者

我就是一只小小鸟

可以阿,我的entry可以显示,这个没有问题阿!  
    现在我在我的主函数里用了一个gtk_timeout_add()函数来调用我的解码函数(这个函数里还包含4个解帧函数并显示)时,现在可以显示我解码之后的数据,但是问题还是存在, 就是读完一帧数据并显示之后,在判断出下一帧要显示的时候就不可以显示了,终端上还会显示如上的错误:

(app:5167): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GtkEntry'

(app:5167): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed

      这是怎么回事呢?

[ 本帖最后由 追求Linux 于 2006-7-24 16:39 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2006-07-24 22:07 |只看该作者
你的错误是
(app:5167): Gtk-CRITICAL **: file gtkentry.c: line 3386 (gtk_entry_set_text): assertion `GTK_IS_ENTRY (entry)' failed

这就说明你对 entry  的引用是有问题的
应该是该指针已经不再执行一个合法的  entry  实例 了

你还是好好看看你 应用 entry  的那个指针的 作用范围吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP