+ -
当前位置:首页 → 问答吧 → gtk_fixed_put奇怪的警告

gtk_fixed_put奇怪的警告

时间:2010-09-10

来源:互联网

Gtk-CRITICAL **: gtk_fixed_put: assertion `GTK_IS_WIDGET (widget)' failed


GtkWidget *Image_animation,*Image_barship[3],*Image_jilu[70],*Image_flash[7];

。。。
                for(i=0,id=0;i<9;i++)
                {
                        y=270+10+i*(25+;
                        if(i>=1)
                                y+=9;               
                        for(j=0;j<7;j++,id++)
                        {
                                x=5+10+j*(25+3);
                                if(j==6)
                                        x+=5;
                               
                                Image_jilu[id]=gtk_image_new();
                                gtk_widget_set_size_request(Image_jilu[id],25,25);                               
                                gtk_fixed_put(GTK_FIXED(fixed),Image_jilu[id],x,y);
                               
                        }
                }
。。。               
                /*错误发生在如下代码中*/
                for(i=0;i<7;i++)
                {
                        if((Image_flash[id]=gtk_image_new())==NULL)
                                abort();
                        //gtk_widget_set_size_request(Image_flash[i],25,25);                       
                        gtk_fixed_put(GTK_FIXED(fixed),GTK_WIDGET(Image_flash[i]),i*25,0);
                }
return fixed;

请教:在错误代码之前有很多相同的代码块,运行并没有问题,为什么增加了最后几个IMAGE代码行后,运行会出现如下警告?Image_flash[id]创建应该是成功没有问题的,为什么FIXED断言它不是WIDGET对象呢?

作者: 凌彬严   发布时间: 2010-09-10

#include "program_face.h"

GtkWidget *Label_timer,*Label_array1[60],*Label_array2[16],*Label_information[4];
GtkWidget *Image_animation,*Image_barship[3],*Image_jilu[70],*Image_flash[7];
GdkColor Color1={0,0xffff,0x0000,0x0000},Color2={0,0xffff,0xffff,0xffff};/*红色,白色*/
gboolean Run=FALSE;
GdkPixbuf *Source_pixbuf[2];
Rect Button_array1[60],Button_array2[16],Barship_array[3],Fen_area;/*分别存储下注门、筹码、上退分区域坐*/
guint16 Barship_id=0,Barship_value[3]={10,50,100},Bar_now=10;
Tanimation_create Animation,Barship;

用GDB查了一下,发现一个更不解的问题,就在执行如上问题代码区时,另一个全局变量Button_array1[39]被篡改了;
即执行这部分代码时这个变量的值就莫名被修改:
                for(i=0;i<7;i++)
                {
                        if((Image_flash[id]=gtk_image_new())==NULL)
                                abort();
                        //gtk_widget_set_size_request(Image_flash[i],25,25);                       
                        gtk_fixed_put(GTK_FIXED(fixed),GTK_WIDGET(Image_flash[i]),i*25,0);
                }

万分不解,难道跟上面一大堆全局变量声明方式有关?

作者: 凌彬严   发布时间: 2010-09-11

不好意思,发现问题所在了
借用了ID代替I
for(i=0;i<7;i++)
                {
                        if((Image_flash[id]=gtk_image_new())==NULL)

作者: 凌彬严   发布时间: 2010-09-11

相关阅读 更多