\ Listing 1: GTK+-Beispiel "Hello World" in C und Forth \ #include needs GtkWindow needs GtkButton oop definitions gtk api decimal \ static void hello( GtkWidget *widget, gpointer data ) \ { \ g_print ("Hello World\n"); \ } :: ( wid data -- ) ." Hello World" cr ; 2 20 cb cb.hello \ static void destroy( GtkWidget *widget, gpointer data ) \ { \ gtk_main_quit (); \ } :: ( wid data -- ) gtk quit ; 2 20 cb cb.destroy \ int main( int argc, char *argv[] ) \ { \ gtk_init (&argc, &argv); \ GtkWindow *window; \ GtkButton *button; GtkWindow new window GtkButton new button : main ( -- ) \ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); \ g_signal_connect (G_OBJECT (window), "destroy", \ G_CALLBACK (destroy), NULL); GTK_WINDOW_TOPLEVEL window init " destroy" cb.destroy 0 window signal connect drop \ gtk_container_set_border_width (GTK_CONTAINER (window), 10); 10 window border-width ! \ button = gtk_button_new_with_label ("Hello World"); \ gtk_container_add (GTK_CONTAINER (window), button); \ g_signal_connect (G_OBJECT (button), "clicked", \ G_CALLBACK (hello), NULL); " Hello World " button init window add " clicked" cb.hello 0 button signal connect drop \ gtk_widget_show_all (GtkWidget window); window show all \ gtk_main (); \ return 0; \ } term? 0if gtk main bye then ; main oop ??