LinuxSir.cn,穿越时空的Linuxsir!

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

请教一个简单的gtk编程问题。 急~谢谢!!!!

[复制链接]
发表于 2006-7-18 16:48:16 | 显示全部楼层 |阅读模式
g_signal_connect ((gpointer)BT_NEXT, "clicked",G_CALLBACK(on_BT_NEXT_clicked),NULL) ;

on_BT_NEXT_clicked (GtkButton *button, gpointer user_data) {
    //获取当前窗口句柄,销毁当前窗口
    。。。。
    //显示第二个窗口
    GtkWidget *window2;
    window2 = create_window2();
    gtk_widget_show(window2);
}

第一个窗口有一个next按钮,点一下后出现第二个窗口,上面是相关的2个函数。
请问我该如何获取一个窗口句柄,并且销毁这个窗口阿???
发表于 2006-7-18 18:08:00 | 显示全部楼层
g_signal_connect的最后一个参数不就可以用嘛
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-18 18:49:38 | 显示全部楼层
恩,谢谢,已经用了,还有个问题啊,
我用anjuta调试程序的时候,把断点设在mian函数的入口,可是不管怎么设置断点,F4运行的时候老是提示“ERROR: Cannot access memory at address 0xcea019e”之类的错误,而且debug关不掉了,必须重新启动anjuta。为什么啊?
我用的是anjuta1.2.4a
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-18 20:08:08 | 显示全部楼层
还有阿,我运行程序,点击按钮出现如下错误:


EXECUTING:
/root/Projects/firstboot/src/firstboot
----------------------------------------------

(firstboot:9347): Gtk-CRITICAL **: gtk_entry_get_text: assertion `GTK_IS_ENTRY (entry)' failed

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

(firstboot:9347): Gtk-CRITICAL **: gtk_entry_get_text: assertion `GTK_IS_ENTRY (entry)' failed


相关代码如下:
void
on_BT_NEXT_clicked                     (GtkButton       *button,
                                        gpointer         user_data)
{
        char *entry_username;
        char *entry_fullname;
        char *entry_password;
        char *entry_confirmpassword;

        struct param *p = (struct param *)user_data;
        entry_username = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_username));
        entry_fullname = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_fullname));
        entry_password = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_password));
        entry_confirmpassword = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_confirmpassword));

    GtkWidget *window2;
    window2 = create_window2 ();
    gtk_widget_show (window2);


}


struct param {
  GtkWidget *entry_username;
  GtkWidget *entry_fullname;
  GtkWidget *entry_password;
  GtkWidget *entry_confirmpassword;
};

  。。。
  。。。

  GtkWidget *entry_username;
  GtkWidget *entry_fullname;
  GtkWidget *entry_password;
  GtkWidget *entry_confirmpassword;
  struct param p;

  。。。
  。。。

  p.entry_username = entry_username;
  p.entry_fullname = entry_fullname;
  p.entry_password = entry_password;
  p.entry_confirmpassword = entry_confirmpassword;

  g_signal_connect ((gpointer) BT_NEXT, "clicked",
                    G_CALLBACK (on_BT_NEXT_clicked),
                    &p);
回复 支持 反对

使用道具 举报

发表于 2006-7-18 21:29:42 | 显示全部楼层
没看出什么问题。
提醒一下:注意一下局部变量,全局变量的生存期。
最好贴出完整源码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-19 09:54:03 | 显示全部楼层
谢谢Linux_Lyb,代码如下:

main.c:

/*
* Initial main.c file generated by Glade. Edit as required.
* Glade will not overwrite this file.
*/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <gnome.h>

#include "interface.h"
#include "support.h"

int
main (int argc, char *argv[])
{
  GtkWidget *window1;

#ifdef ENABLE_NLS
  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
  textdomain (GETTEXT_PACKAGE);
#endif

  gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
                      argc, argv,
                      GNOME_PARAM_APP_DATADIR, PACKAGE_DATA_DIR,
                      NULL);

  /*
   * The following code was added by Glade to create one of each component
   * (except popup menus), just so that you see something after building
   * the project. Delete any components that you don't want shown initially.
   */
  window1 = create_window1 ();
  gtk_widget_show (window1);

  gtk_main ();
  return 0;
}

======================================================
interface.h:
/*
* DO NOT EDIT THIS FILE - it is generated by Glade.
*/

GtkWidget* create_window1 (void);
GtkWidget* create_window2 (void);

/*add by gy struct param*/
struct param {
  GtkWidget *entry_username;
  GtkWidget *entry_fullname;
  GtkWidget *entry_password;
  GtkWidget *entry_confirmpassword;
};

====================================================
interface.c:
/*
* DO NOT EDIT THIS FILE - it is generated by Glade.
*/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#include <bonobo.h>
#include <gnome.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"

#define GLADE_HOOKUP_OBJECT(component,widget,name) \
  g_object_set_data_full (G_OBJECT (component), name, \
    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)

#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
  g_object_set_data (G_OBJECT (component), name, widget)


GtkWidget*
create_window1 (void)
{
  GtkWidget *window1;
  GtkWidget *table1;
  GtkWidget *table2;
  GtkWidget *label1;
  GtkWidget *label2;
  GtkWidget *label3;
  GtkWidget *label4;
  GtkWidget *label5;
  GtkWidget *entry_username;
  GtkWidget *entry_fullname;
  GtkWidget *entry_password;
  GtkWidget *entry_confirmpassword;
  GtkWidget *label8;
  GtkWidget *table3;
  GtkWidget *label7;
  GtkWidget *BT_NEXT;
  /*add by gy*/
  struct param p;

  window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (window1, 380, 230);
  gtk_window_set_title (GTK_WINDOW (window1), _("Add Account"));
  gtk_window_set_position (GTK_WINDOW (window1), GTK_WIN_POS_CENTER);
  gtk_window_set_modal (GTK_WINDOW (window1), TRUE);
  gtk_window_set_resizable (GTK_WINDOW (window1), FALSE);

  table1 = gtk_table_new (2, 1, FALSE);
  gtk_widget_show (table1);
  gtk_container_add (GTK_CONTAINER (window1), table1);

  table2 = gtk_table_new (5, 3, FALSE);
  gtk_widget_show (table2);
  gtk_table_attach (GTK_TABLE (table1), table2, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
  gtk_widget_set_size_request (table2, 407, -1);
  gtk_table_set_row_spacings (GTK_TABLE (table2), 6);

  label1 = gtk_label_new (_("    User Account"));
  gtk_widget_show (label1);
  gtk_table_attach (GTK_TABLE (table2), label1, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (label1, 80, 36);
  gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5);

  label2 = gtk_label_new (_("User Name:"));
  gtk_widget_show (label2);
  gtk_table_attach (GTK_TABLE (table2), label2, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label2), 0, 0.5);

  label3 = gtk_label_new (_("Full Name:"));
  gtk_widget_show (label3);
  gtk_table_attach (GTK_TABLE (table2), label3, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5);

  label4 = gtk_label_new (_("assWord:"));
  gtk_widget_show (label4);
  gtk_table_attach (GTK_TABLE (table2), label4, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5);

  label5 = gtk_label_new (_("Confirm PassWord:"));
  gtk_widget_show (label5);
  gtk_table_attach (GTK_TABLE (table2), label5, 0, 1, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5);

  entry_username = gtk_entry_new ();
  gtk_widget_show (entry_username);
  gtk_table_attach (GTK_TABLE (table2), entry_username, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (entry_username), 8226);

  entry_fullname = gtk_entry_new ();
  gtk_widget_show (entry_fullname);
  gtk_table_attach (GTK_TABLE (table2), entry_fullname, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (entry_fullname), 8226);

  entry_password = gtk_entry_new ();
  gtk_widget_show (entry_password);
  gtk_table_attach (GTK_TABLE (table2), entry_password, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (entry_password), 8226);

  entry_confirmpassword = gtk_entry_new ();
  gtk_widget_show (entry_confirmpassword);
  gtk_table_attach (GTK_TABLE (table2), entry_confirmpassword, 1, 2, 4, 5,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (entry_confirmpassword), 8226);

  label8 = gtk_label_new ("");
  gtk_widget_show (label8);
  gtk_table_attach (GTK_TABLE (table2), label8, 2, 3, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (label8, 132, -1);
  gtk_misc_set_alignment (GTK_MISC (label8), 0, 0.5);

  table3 = gtk_table_new (1, 2, FALSE);
  gtk_widget_show (table3);
  gtk_table_attach (GTK_TABLE (table1), table3, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
  gtk_widget_set_size_request (table3, -1, 15);

  label7 = gtk_label_new ("");
  gtk_widget_show (label7);
  gtk_table_attach (GTK_TABLE (table3), label7, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (label7, 240, -1);
  gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);

  BT_NEXT = gtk_button_new_with_mnemonic (_("Next"));
  gtk_widget_show (BT_NEXT);
  gtk_table_attach (GTK_TABLE (table3), BT_NEXT, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (BT_NEXT, 118, -1);

  /*add by gy*/
  p.entry_username = entry_username;
  p.entry_fullname = entry_fullname;
  p.entry_password = entry_password;
  p.entry_confirmpassword = entry_confirmpassword;

  g_signal_connect ((gpointer) BT_NEXT, "clicked",
                    G_CALLBACK (on_BT_NEXT_clicked),
                    &p);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1");
  GLADE_HOOKUP_OBJECT (window1, table1, "table1");
  GLADE_HOOKUP_OBJECT (window1, table2, "table2");
  GLADE_HOOKUP_OBJECT (window1, label1, "label1");
  GLADE_HOOKUP_OBJECT (window1, label2, "label2");
  GLADE_HOOKUP_OBJECT (window1, label3, "label3");
  GLADE_HOOKUP_OBJECT (window1, label4, "label4");
  GLADE_HOOKUP_OBJECT (window1, label5, "label5");
  GLADE_HOOKUP_OBJECT (window1, entry_username, "entry_username");
  GLADE_HOOKUP_OBJECT (window1, entry_fullname, "entry_fullname");
  GLADE_HOOKUP_OBJECT (window1, entry_password, "entry_password");
  GLADE_HOOKUP_OBJECT (window1, entry_confirmpassword, "entry_confirmpassword");
  GLADE_HOOKUP_OBJECT (window1, label8, "label8");
  GLADE_HOOKUP_OBJECT (window1, table3, "table3");
  GLADE_HOOKUP_OBJECT (window1, label7, "label7");
  GLADE_HOOKUP_OBJECT (window1, BT_NEXT, "BT_NEXT");

  return window1;
}

GtkWidget*
create_window2 (void)
{
  GtkWidget *window2;
  GtkWidget *table4;
  GtkWidget *table5;
  GtkWidget *label9;
  GtkWidget *label10;
  GtkWidget *label11;
  GtkWidget *label12;
  GtkWidget *entry_confirm_username;
  GtkWidget *entry_confirm_password;
  GtkWidget *label13;
  GtkWidget *entry_confirm_fullname;
  GtkWidget *table6;
  GtkWidget *label14;
  GtkWidget *BT_BACK;
  GtkWidget *BT_FINISH;

  window2 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (window2, 380, 207);
  gtk_window_set_title (GTK_WINDOW (window2), _("Add Account"));
  gtk_window_set_position (GTK_WINDOW (window2), GTK_WIN_POS_CENTER);
  gtk_window_set_modal (GTK_WINDOW (window2), TRUE);
  gtk_window_set_resizable (GTK_WINDOW (window2), FALSE);

  table4 = gtk_table_new (2, 1, FALSE);
  gtk_widget_show (table4);
  gtk_container_add (GTK_CONTAINER (window2), table4);

  table5 = gtk_table_new (4, 3, FALSE);
  gtk_widget_show (table5);
  gtk_table_attach (GTK_TABLE (table4), table5, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
  gtk_widget_set_size_request (table5, 403, 137);
  gtk_table_set_row_spacings (GTK_TABLE (table5), 6);

  label9 = gtk_label_new (_("    User Account"));
  gtk_widget_show (label9);
  gtk_table_attach (GTK_TABLE (table5), label9, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (label9, 80, 36);
  gtk_misc_set_alignment (GTK_MISC (label9), 0, 0.5);

  label10 = gtk_label_new (_("User Name:          "));
  gtk_widget_show (label10);
  gtk_table_attach (GTK_TABLE (table5), label10, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label10), 0, 0.5);

  label11 = gtk_label_new (_("Full Name:"));
  gtk_widget_show (label11);
  gtk_table_attach (GTK_TABLE (table5), label11, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label11), 0, 0.5);

  label12 = gtk_label_new (_("ass Word:"));
  gtk_widget_show (label12);
  gtk_table_attach (GTK_TABLE (table5), label12, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5);

  entry_confirm_username = gtk_entry_new ();
  gtk_widget_show (entry_confirm_username);
  gtk_table_attach (GTK_TABLE (table5), entry_confirm_username, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (entry_confirm_username), 8226);

  entry_confirm_password = gtk_entry_new ();
  gtk_widget_show (entry_confirm_password);
  gtk_table_attach (GTK_TABLE (table5), entry_confirm_password, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (entry_confirm_password), 8226);

  label13 = gtk_label_new ("");
  gtk_widget_show (label13);
  gtk_table_attach (GTK_TABLE (table5), label13, 2, 3, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (label13, 132, -1);
  gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5);

  entry_confirm_fullname = gtk_entry_new ();
  gtk_widget_show (entry_confirm_fullname);
  gtk_table_attach (GTK_TABLE (table5), entry_confirm_fullname, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (entry_confirm_fullname), 8226);

  table6 = gtk_table_new (1, 4, FALSE);
  gtk_widget_show (table6);
  gtk_table_attach (GTK_TABLE (table4), table6, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
  gtk_widget_set_size_request (table6, -1, 29);
  gtk_table_set_col_spacings (GTK_TABLE (table6), 15);

  label14 = gtk_label_new (_("                            "));
  gtk_widget_show (label14);
  gtk_table_attach (GTK_TABLE (table6), label14, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (label14, 95, -1);
  gtk_misc_set_alignment (GTK_MISC (label14), 0, 0.5);

  BT_BACK = gtk_button_new_with_mnemonic (_("Back"));
  gtk_widget_show (BT_BACK);
  gtk_table_attach (GTK_TABLE (table6), BT_BACK, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (BT_BACK, 116, -1);

  BT_FINISH = gtk_button_new_with_mnemonic (_("Finish"));
  gtk_widget_show (BT_FINISH);
  gtk_table_attach (GTK_TABLE (table6), BT_FINISH, 2, 3, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_widget_set_size_request (BT_FINISH, 116, -1);

  g_signal_connect ((gpointer) BT_BACK, "clicked",
                    G_CALLBACK (on_BT_BACK_clicked),
                    NULL);
  g_signal_connect ((gpointer) BT_FINISH, "clicked",
                    G_CALLBACK (on_BT_FINISH_clicked),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (window2, window2, "window2");
  GLADE_HOOKUP_OBJECT (window2, table4, "table4");
  GLADE_HOOKUP_OBJECT (window2, table5, "table5");
  GLADE_HOOKUP_OBJECT (window2, label9, "label9");
  GLADE_HOOKUP_OBJECT (window2, label10, "label10");
  GLADE_HOOKUP_OBJECT (window2, label11, "label11");
  GLADE_HOOKUP_OBJECT (window2, label12, "label12");
  GLADE_HOOKUP_OBJECT (window2, entry_confirm_username, "entry_confirm_username");
  GLADE_HOOKUP_OBJECT (window2, entry_confirm_password, "entry_confirm_password");
  GLADE_HOOKUP_OBJECT (window2, label13, "label13");
  GLADE_HOOKUP_OBJECT (window2, entry_confirm_fullname, "entry_confirm_fullname");
  GLADE_HOOKUP_OBJECT (window2, table6, "table6");
  GLADE_HOOKUP_OBJECT (window2, label14, "label14");
  GLADE_HOOKUP_OBJECT (window2, BT_BACK, "BT_BACK");
  GLADE_HOOKUP_OBJECT (window2, BT_FINISH, "BT_FINISH");

  return window2;
}
=====================================================
callback.h:
#include <gnome.h>


void
on_button1_clicked                     (GtkButton       *button,
                                        gpointer         user_data);

void
on_BT_NEXT_clicked                     (GtkButton       *button,
                                        gpointer         user_data);

void
on_BT_BACK_clicked                     (GtkButton       *button,
                                        gpointer         user_data);

void
on_BT_FINISH_clicked                   (GtkButton       *button,
                                        gpointer         user_data);
======================================================
callback.c:
#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <gnome.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"


       
void
on_BT_NEXT_clicked                     (GtkButton       *button,
                                        gpointer         user_data)
{
        char *entry_username;
        char *entry_fullname;
        char *entry_password;
        char *entry_confirmpassword;
       
        struct param *p = (struct param *)user_data;
        entry_username = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_username));
        entry_fullname = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_fullname));
        entry_password = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_password));
        entry_confirmpassword = (char *)gtk_entry_get_text(GTK_ENTRY(p->entry_confirmpassword));

    GtkWidget *window2;
    window2 = create_window2 ();
    gtk_widget_show (window2);
       
}

void
on_BT_BACK_clicked                     (GtkButton       *button,
                                        gpointer         user_data)
{

}


void
on_BT_FINISH_clicked                   (GtkButton       *button,
                                        gpointer         user_data)
{

}
=================================================

编译的时候没有错,是运行时错误,我点Next按钮的时候出的那个错。
回复 支持 反对

使用道具 举报

发表于 2006-7-19 10:44:52 | 显示全部楼层
注意一下create_window1()函数里面的变量struct param p
p在函数调用后已被释放。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-19 11:37:51 | 显示全部楼层
Post by Linux_Lyb
注意一下create_window1()函数里面的变量struct param p
p在函数调用后已被释放。


我没有释放p阿,我就是想把p传过去,然后用阿?
那我该怎么修改阿?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-19 11:40:25 | 显示全部楼层
还有一个问题啊,我想当点击next按钮的时候隐藏第一个窗口,也就是window1,然后显示第二个窗口,怎么隐藏window1阿?找了gtk的API也没有发现这样的函数阿?
回复 支持 反对

使用道具 举报

发表于 2006-7-19 12:24:39 | 显示全部楼层
gtk_widget_hide
回复 支持 反对

使用道具 举报

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

本版积分规则

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