待解决的问题

一个定时器)  A timer example  

#include <gtk\gtk.h>
//
//GdkPixbuf * create_pixbuf(gchar * filename)
//{
// GdkPixbuf * pixbuf;
// GError * error = NULL;
// pixbuf = gdk_pixbuf_new_from_file(filename,&error);
// if( !pixbuf)
// {
// g_print( error->message);
// g_error_free(error);
// }
// return pixbuf;
//}
GtkWidget * fixed;
GtkWidget * button ;
gint x = 10;
gint y = 10;
gint ssadd(gpointer data)
{
x = x+23;
y = y+23;
gtk_fixed_move(GTK_FIXED(fixed),button,x,y);
g_print("%d\n",x);
return 0;
}
int main(int argc ,char **argv)
{
gtk_init(&argc,&argv);

GtkWidget * window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window),400,400);

button = gtk_button_new_with_label("yes");
GtkWidget * frame = gtk_frame_new("lan");
gtk_container_add(GTK_CONTAINER(window),frame);
gtk_container_set_border_width(GTK_CONTAINER(window),10);

fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(frame),fixed);
gtk_fixed_put(GTK_FIXED(fixed),button,20,20);g_timeout_add(500,ssadd,"W");
// gtk_window_set_icon(GTK_WINDOW(window),create_pixbuf(NULL));
gtk_widget_show_all(window);

gtk_timeout_add(50,ssadd,NULL);
gtk_main();
return 0;
}

 

、、2

 gtk_widget_add_events用来为某个构件添加一个事件。该函数用来说明哪一个构件将回接受到事件,并对事件的发生做出反应。一些事件使用时要已与特定的构件组装好了,另外的一些事件需要使用函数 gtk_widget_add_events()去组装。
  1. gtk_widget_add_events(window,GDK_BUTTON_PRESS_MASK)//为窗口添加按钮点击事件  
  2. g_signal_connect(window, "button-press-event",G_CALLBACK(clicked), NULL);//然后可以绑定press信号到clicked函数  
  3. gboolean clicked(GtkWidget *widget, GdkEventButton *event,gpointer user_data);//在press事件里将会被调用  

        clicked函数里,通过event可以获取点击的坐标,event->x 和event->y。事实上,基本上所有的event都可以获取坐标,例如添加另外一个事件GDK_CONFIGURE,可以绑定"configure-event"信号,这时候event可以获取configure的坐标:event->configure.x

posted on 2013-02-22 22:26  三木追风  阅读(324)  评论(0编辑  收藏  举报