QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1005|回复: 7

GTK初学者的问题?这是我看了教程还不明白的问题?

[复制链接]
发表于 2004-2-20 10:27:14 | 显示全部楼层 |阅读模式
void hello (GtkWidget *widget, gpointer *data)
{
    g_print ("Hello World\n");
}

/* another callback */
void destroy (GtkWidget *widget, gpointer *data)
{
    gtk_main_quit ();
}

在上面的程序代码中:"GtkWidget *widget, gpointer *data"
1,"GtkWidget *widget, gpointer *data" 是做什么用的?
2,"GtkWidget *widget" 定义了什么内容?是不是建立函数都要用到这些定义?

问题可能过于简单,但是我确实不懂!

谢谢了!!!
发表于 2004-2-20 11:34:25 | 显示全部楼层
先去学习C语言吧。
这要是给你解释起来,都可以写半本书了。

在学习gtk变成之前,最好搞明白函数指针,回调的概念,结合C语言的基础,
再看就不会很难了。
回复

使用道具 举报

发表于 2004-2-20 15:08:07 | 显示全部楼层
widget 是一个GtkWidget指针,指向发出这个回调函数的小部件(比如按钮,文本框之类的),data是一个指针,指向发给这个回调函数的参数(一般可以不用,我就不用,当然,如果你要用,还要进行类型转换成你要的类型).gtk设计是进入一个gtk_main. 这个函数不停地循环,检测有没有事件产生(比如一个按钮被按下)。然后调用与该事件对应的回调函数,函数返回后又不停循环。GtkWidget是一个模仿C++类的C结构,是许多小部件的基类(你就把它看成一个类吧,当然,实际上有非常大的实现区别)
回复

使用道具 举报

发表于 2004-2-21 23:39:17 | 显示全部楼层
我晕啊晕啊
你好象没有学过c语言或者c++的
gpoint相当于char *(就是么,gint相当int一样)
越解释恐怕越糊涂
不如去找本c书看看了
回复

使用道具 举报

发表于 2004-2-22 11:46:55 | 显示全部楼层
请见glib头文件gtypes.h中gpointer 的定义(glib2,gtypes.h第66行):typedef void* gpointer;第44行 typedef int gint; glib这所以采用这种简单的typedef 是因为在glib安装时会自动检测系统的数据类型,修改相应的typedef,这样在不同的机器上gtypes.h文件中的typedef 可能不同,从而保证同样的glib数据类型有相同的长度,比如guint64在任何机器上都是64位。
有什么不对的地方非常希望大家讨论。对为此花费宝贵时间的朋友表示感谢。
还有,新手上路,有不对的地方希望大家指出。
祝本帖的正在冬眠的hibernate,与将军肚agadoo及beihanqd,Younker愉快。
回复

使用道具 举报

发表于 2004-2-22 12:23:19 | 显示全部楼层
他说的不是你,不要因此伤了和气,
回复

使用道具 举报

发表于 2004-2-22 14:32:58 | 显示全部楼层
sorry
有什么冒犯的地方
还请多多原谅
有时侯说话有点太随便了
不好意思
回复

使用道具 举报

 楼主| 发表于 2004-2-24 10:03:55 | 显示全部楼层
多谢诸位给我的支持,我要加快步伐学习,改天做出个小软件什么的与大家分享!

再次感谢给于热心帮助的您!!
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-9 00:05 , Processed in 0.070985 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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