QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 712|回复: 3

求教,谢谢

[复制链接]
发表于 2004-10-4 21:49:29 | 显示全部楼层 |阅读模式
#include <gnome.h>

  void hellomessage(GtkWidget *widget, gpointer data)
{  g_print("Hello World!\n");
}

  gint  closeprog(GtkWidget *widget, GdkEvent *event, gpointer data)
{ gtk_main_quit();
}

int main (int argc, char **argv)
{
  GtkWidget *app;
  GtkWidget *button;
  
  gnome_init (" ", "0.1",argc, argv);

  button = gtk_button_new_with_label("Click me!");
  app = gnome_app_new ("Hello World", "Hello App");
  gnome_app_set_contents (GNOME_APP (app), button);
  gtk_signal_connect (GTK_APP (app), "delete_event",
                                   GTK_SIGNAL_FUNC (closeprog), NULL);
  gtk_signal_connect (GTK_OBJECT (button), "Clicked",
                                     GTKSIGNAL_FUNC(hellomessage),NULL);
  gtk_widget_show_all(app);
  gtk_main();
  return 0;}

编译:
gcc -o hello hello.c `gnome-config --cflags --libs gnome gnomeui`
出现以下提示:
hello.c: In function `main':
hello.c:22: warning: passing arg 1 of `gtk_signal_connect' makes pointer from in teger without a cast
hello.c:24: warning: passing arg 3 of `gtk_signal_connect' makes pointer from in teger without a cast
/tmp/ccAx5D3o.o(.text+0xb1): In function `main':
: undefined reference to `GTK_APP'
/tmp/ccAx5D3o.o(.text+0xcc): In function `main':
: undefined reference to `GTKSIGNAL_FUNC'
collect2: ld returned 1 exit status
发表于 2004-10-4 22:29:45 | 显示全部楼层
把GTK_APP改成GNOME_APP。
把GTKSIGNAL_FUNC中加一个下划线GTK_SIGNAL_FUNC。
警告的内容楼主自己看看吧。
楼主仔细点啊   
回复

使用道具 举报

 楼主| 发表于 2004-10-5 10:45:51 | 显示全部楼层
#include <gnome.h>
                                                                                                                                             
   /*定义两个回叫函数:hellomassage和closeprog.Hellomessage输出一个简单的文本”Hello World".closeprog 调用gtk_main_quit 函数结束程序。 */
                                                                                                                                             
  void hellomessage(GtkWidget *widget,GdkEvent *event, gpointer data)
{  printf("Hello World!\n");
}
                                                                                                                                             
  gint  closeprog(GtkWidget *widget, GdkEvent *event, gpointer data)
{ gtk_main_quit();
}
                                                                                                                                             
    /*在主函数中,定义两个GtkWidget指针:app和button. app是指向主应用窗口的指针,而button是指向一个简单按钮对象的指针。 */
                                                                                                                                             
int main (int argc, char **argv)
{
  GtkWidget *app;
  GtkWidget *button;
  /*创建gnome_init函数初始化GNOME界面*/
  gnome_init (" ", "0.1",argc, argv);
                                                                                                                                             
   /*利用gtk_button_new_with_label 函数创建按钮对象,并将它的地址赋给指针button,如下所示,按钮显示时带有标签“ Click Me”*/
  button = gtk_button_new_with_label("Click me!");
                                                                                                                                             
   /*利用gnome_app_new函数创建应用程序窗口构件,并将它的地址赋给app*/
  app = gnome_app_new ("Hello World", "Hello App");
                                                                                                                                             
   /*利用gnome_app_set_contents将按钮放入应用程序窗口。*/
  gnome_app_set_contents (GNOME_APP (app), button);
                                                                                                                                             
   /*利用gtk_signal_connect将应用程序和delete_event信号关联,当用户点击关闭方框时会发出该信号。设置它运行closeprog函数,而closeprog函数将会调   用gtk_main_quit 结束程序运行*/
  gtk_signal_connect(GTK_OBJECT (app), "delete_event",
                                     GTK_SIGNAL_FUNC(closeprog),NULL);
                                                                                                                                             
   /*利用gtk_signal_connect将按钮和鼠标点击(clicked)事件关联,设置它运行hello函数。只要用户一点击按钮,标准输出就会显示"Hello World"*/
  gtk_signal_connect (GTK_OBJECT (button), "Clicked",
                                     GTK_SIGNAL_FUNC(hellomessage),NULL);
                                                                                                                                             
  /*利用gtk_widget_shou_all函数显示应用程序窗口及其包含的按钮*/
  gtk_widget_show_all(app);
                                                                                                                                             
  /*利用gtk_main开始交互界面*/
  gtk_main();
return 0;}
还是有点小问题:
[root@ruizhi root]# gcc -o hello hello.c `gnome-config --cflags --libs gnome gnomeui`
[root@ruizhi root]# ./hello

Gtk-WARNING **: gtk_signal_connect(): could not find signal "Clicked" in the `GtkButton' class ancestry
麻烦怎么改?
回复

使用道具 举报

 楼主| 发表于 2004-10-5 10:48:54 | 显示全部楼层
不好意思,发现了,
gtk_signal_connect (GTK_OBJECT (button), "Clicked",
GTK_SIGNAL_FUNC(hellomessage),NULL);
“Clicked"  不能大写
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 11:00 , Processed in 0.045117 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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