int main (int argc, char *argv[])
{
/* GtkWidget est le type pour déclarer les widgets. */
GtkWidget *window;
GtkWidget *button;
/* Cette fonction est appelée dans toutes les applications GTK.
* Les paramètres passés en ligne de commande sont analysés et
* retournés à l'application. */
gtk_init (&argc, &argv);
/* Création d'une nouvelle fenêtre. */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
/* Lorsque la fenêtre reçoit le signal "delete_event"
* (envoyé par le gestionnaire de fenêtres en utilisant l'option
* « close » ou la barre de titre), on lui demande d'appeler la
* fonction delete_event() définie plus haut. La donnée passée en
* paramètre à la fonction de rappel est NULL et est ignoré dans le
* rappel. */
gtk_signal_connect (GTK_OBJECT (window), "delete_event",
GTK_SIGNAL_FUNC (delete_event), NULL);
/* Ici, on connecte l'évenement "destroy" à un gestionnaire de signal.
* Cet événement arrive lorsqu'on appelle gtk_widget_destroy() sur la
* fenêtre, ou si l'on retourne TRUE dans le rappel "delete_event". */
gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (destroy), NULL);
/* Configuration de la largeur du contour de la fenêtre. */
gtk_container_border_width (GTK_CONTAINER (window), 10);
/* Création d'un nouveau bouton portant le label
* "Bonjour tout le monde". */
button = gtk_button_new_with_label ("Bonjour tout le monde");
/* Quand le bouton recevra le signal "clicked", il appellera la
* fonction hello() définie plus haut en lui passant NULL en paramètre. */
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (hello), NULL);
/* Ceci provoquera la destruction de la fenêtre par appel de la
* fonction gtk_widget_destroy(window) lors du signal "clicked".
* Le signal de destruction pourrait venir de là, ou du
* gestionnaire de fenêtres. */
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (window));
/* Insertion du bouton dans la fenêtre (container gtk). */
gtk_container_add (GTK_CONTAINER (window), button);
/* L'étape finale consiste à afficher ce nouveau widget... */
gtk_widget_show (button);
/* ... et la fenêtre. */
gtk_widget_show (window);
/* Toutes les applications GTK doivent avoir un gtk_main().
* Le déroulement du programme se termine là et attend qu'un
* événement survienne (touche pressée ou événement souris). */
gtk_main ();
return 0;
}