#include <gtk/gtk.h> int main( int argc, char *argv[] ) { GtkWidget *fenetre, *pTable, *aArea, *eReglev, *eRegleh; gtk_init (&argc, &argv); fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit),NULL); #define XSIZE 600 #define YSIZE 400 #define EVENT_METHOD(i, x) GTK_WIDGET_GET_CLASS(i)->x pTable = gtk_table_new (3, 2, FALSE); gtk_container_add (GTK_CONTAINER (fenetre), pTable); aArea = gtk_drawing_area_new (); gtk_widget_set_size_request (GTK_WIDGET (aArea), XSIZE, YSIZE); gtk_table_attach (GTK_TABLE (pTable), aArea, 1, 2, 1, 2, GTK_EXPAND|GTK_FILL, GTK_FILL, 0, 0); gtk_widget_set_events (aArea, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK); eReglev = gtk_vruler_new(); gtk_ruler_set_metric (GTK_RULER (eReglev), GTK_PIXELS); gtk_ruler_set_range (GTK_RULER (eReglev), 0, YSIZE, 10, YSIZE ); g_signal_connect_swapped (G_OBJECT (aArea), "motion_notify_event", G_CALLBACK (EVENT_METHOD (eReglev, motion_notify_event)), G_OBJECT (eReglev)); gtk_table_attach (GTK_TABLE (pTable), eReglev, 0, 1, 1, 2, GTK_FILL, GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0); eRegleh = gtk_hruler_new(); gtk_ruler_set_metric (GTK_RULER (eRegleh), GTK_PIXELS); gtk_ruler_set_range (GTK_RULER (eRegleh), 7, 13, 0, 20); g_signal_connect_swapped (G_OBJECT (aArea), "motion_notify_event", G_CALLBACK (EVENT_METHOD (eRegleh, motion_notify_event)), G_OBJECT (eRegleh)); gtk_table_attach (GTK_TABLE (pTable), eRegleh, 1, 2, 0, 1, GTK_EXPAND|GTK_SHRINK|GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show_all(fenetre); gtk_main (); return 0; }