1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include <gtk/gtk.h>
enum
{
H_SCROLL,
V_SCROLL
};
static GtkWidget *label = NULL;
gboolean scrolling (GtkRange *range, GtkScrollType scroll, gdouble value,
gpointer user_data)
{
gchar *text = NULL;
static gdouble hvalue = 0;
static gdouble vvalue = 0;
switch (GPOINTER_TO_INT (user_data))
{
case H_SCROLL:
hvalue += value;
break;
case V_SCROLL:
vvalue += value;
break;
}
text = g_strdup_printf ("%f - %f", hvalue, vvalue);
gtk_label_set_text (GTK_LABEL (label), text);
g_free (text);
return TRUE;
}
int main (gint argc, gchar **argv)
{
GtkWidget *window = NULL;
GtkWidget *scroll = NULL;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT (window), "destroy", gtk_main_quit, NULL);
scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_container_add (GTK_CONTAINER (window), scroll);
label = gtk_label_new ("0 - 0");
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll), label);
g_signal_connect (G_OBJECT (GTK_SCROLLED_WINDOW (scroll)->hscrollbar),
"change-value", G_CALLBACK (scrolling), H_SCROLL);
g_signal_connect (G_OBJECT (GTK_SCROLLED_WINDOW (scroll)->vscrollbar),
"change-value", G_CALLBACK (scrolling), V_SCROLL);
gtk_widget_show_all (window);
gtk_main ();
return 0;
} |
Partager