#ifdef NIX echo -n "compiling ..." gcc `pkg-config --cflags --libs gtk+-2.0` scrolling.c -o scrolling if [ -a scrolling ] ; then echo "Done." ./scrolling else echo "failed!." fi exit #endif #include #include GdkWindow *gdk_window; gint x=50; PangoLayout *layout; GtkWidget *drawingarea1; gboolean on_drawingarea1_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { printf ("expose\n"); gdk_draw_layout (widget->window, widget->style->black_gc, x,1, layout); return FALSE; } void expose (void) { GdkRegion *region; region = gdk_drawable_get_clip_region (gdk_window); gdk_window_invalidate_region (gdk_window, region, TRUE); gdk_window_process_updates (gdk_window, TRUE); gdk_region_destroy (region); } gboolean timer (gpointer data) { x-=1; expose(); return TRUE; } int main (int argc, char *argv[]) { GtkWidget *window1; gtk_init (&argc, &argv); window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); drawingarea1 = gtk_drawing_area_new (); gtk_widget_show (drawingarea1); gtk_container_add (GTK_CONTAINER (window1), drawingarea1); gtk_widget_realize (drawingarea1); gdk_window=drawingarea1->window; layout=gtk_widget_create_pango_layout (drawingarea1, "some scrolling text"); g_signal_connect ((gpointer) drawingarea1, "expose_event", G_CALLBACK (on_drawingarea1_expose_event), NULL); gtk_widget_show (window1); g_timeout_add (60, timer, NULL); gtk_main(); return 0; }