QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 745|回复: 3

count值不会累加????

[复制链接]
发表于 2004-4-22 14:14:20 | 显示全部楼层 |阅读模式
[code:1]/*hello程序 hello.c*/
#include<gtk/gtk.h>
gint count=1;
void
on_button_clicked  (GtkWidget *button,gpointer userdata)
{
        g_print("你好,这是一个hello功能的测试。");
        g_print("%d\n",(gint)userdata);
        count++;
}
int main (int argc, char* argv[])
{
        GtkWidget *window;
        GtkWidget *button;
        gtk_init(&argc,&argv);
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        g_signal_connect(G_OBJECT(window),"delete_event",
                G_CALLBACK(gtk_main_quit),NULL);
        gtk_window_set_title(GTK_WINDOW(window),"hello功能实现");
        gtk_window_set_default_size(GTK_WINDOW(window),500,100);
        gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
        gtk_container_set_border_width(GTK_CONTAINER(window),40);
        button = gtk_button_new_with_label("按下些按钮会在终端显示");
        g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),(gpointer)count);
        gtk_container_add(GTK_CONTAINER(window),button);
        gtk_widget_show(button);
        gtk_widget_show(window);
        gtk_main();
        return FALSE;
}
[/code:1]
发表于 2004-4-22 15:54:49 | 显示全部楼层
这是回调函数的注册方式所引起的。它注册函数会将参数作为一个指针,在注册后这个指针就不会变了,即使你以后改变了这个指针。所以正确的方式是改变这个指针所指向的内容,而不是这个gpointer userdata本身。即传参数(gpointer)(&count),在打印时用g_print("%d\n",(gint)(*(gint*)userdata));
回复

使用道具 举报

 楼主| 发表于 2004-4-22 23:02:51 | 显示全部楼层
谢谢,一定好好学习
希望能留下QQ可以吗?
回复

使用道具 举报

发表于 2004-4-22 23:30:46 | 显示全部楼层
有空好好交流。不过我的确没有QQ(有个FANS问过)。这个论坛是个很好的交流场所啊。
回复

使用道具 举报

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

本版积分规则

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

© 2021 Powered by Discuz! X3.5.

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