Welcome! Anonymous


[COURS] [GTK] Créer une fenêtre en C

Tout concernant le langage C et C++

[COURS] [GTK] Créer une fenêtre en C

Messagede alton » Mar 28 Avr 2009 13:56

Voila, depuis le temps que je le dis à Tchupa, voici un tuto pour Gtk.


Dans ce tuto, nous allons voir comment créer une fenêtre

Déjà, comment compiler un programme en C qui utilise Gtk?
Code: Tout sélectionner
gcc $(pkg-config --libs --cflags gtk+-2.0) nomDuFichier.c -o nomExecutable

NB : ici, j'utilise gcc comme compilateur , mais vous pouvez utiliser celui de votre choix

Code: Tout sélectionner

#include <stdlib.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
        //avec Gtk, tous les éléments graphiques sont des GtkWidget
        GtkWidget * maFenetre = NULL; // on crée donc un GtkWidget qui sera notre fenetre



        //cette fonction permet d'initialiser Gtk

        gtk_init(&amp;argc, &amp;argv);



        // on déclare que notre GtkWidget sera une fenêtre
        // GTK_WINDOW_TOPLEVEL permet de la définir en tant que fenêtre "normale",

        maFenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);


        // nous allons maintenant définir la taille de cette fenêtre
        // pour celà, on utilise la fonction
        // void gtk_window_set_default_size(GtkWindow * window , gint width , gint height )

        gtk_window_set_default_size(GTK_WINDOW(maFenetre), 500, 300);



        // Il serait intéressant maintenant de donner un titre à notre fenêtre
        // pour cela, nous allons utiliser la fonction gtk_window_set_title( GtkWindow * window , gchar * title )
        // Attention au passage, on dirai une chaine de caractère mais c'est bien un gchar*

        gtk_window_set_title(GTK_WINDOW(maFenetre), "Cool, une fenetre :)");


        //voila, tout est prêt pour afficher notre première fenêtre
        // nous allons maintenant la rendre visible
        // pour cela, on utilise la fonction gtk_widget_show( GtkWidget* widget );
        // si on voulais également afficher les éléments contenus dans notre fenêtre,
        // la fonction a utiliser serais gtk_widget_show_all( GtkWidget* widget );
        // mais nous n'en sommes pas encore là


        gtk_widget_show(maFenetre);




        // pour quitter proprement quand on ferme la fenêtre ( ça, je l'expliquerai plus tard )

        g_signal_connect(G_OBJECT(maFenetre), "delete-event", G_CALLBACK(gtk_main_quit), NULL);



        // boucle événementielle
        // pour éviter que le programme quitte directement

        gtk_main();  


        return EXIT_SUCCESS;
}
 


[color="DarkGreen"]Voilà, si vous avez des remarques ou des questions, n'hésitez pas :)[/color]
Ceux qui disent que c'est compliqué de se mettre à linux n'ont jamais essayé de comprendre une fille.
Avatar de l’utilisateur
alton
Co-administrateur
Co-administrateur
 
Messages: 664
Inscription: Ven 1 Fév 2008 11:57
Tchup`s - points: 180.00

Publicité

Messagede totocam » Mar 28 Avr 2009 14:46

Bon tuto, bien commenté, rien à redire !

pourtant j'aime pas le C ;)
Avatar de l’utilisateur
totocam
Co-administrateur
Co-administrateur
 
Messages: 177
Inscription: Jeu 31 Jan 2008 13:11
Tchup`s - points: 80.00
Localisation: AUSSONNE

Messagede alton » Mar 28 Avr 2009 15:06

[color="DarkGreen"]Merci ;)[/color]
Ceux qui disent que c'est compliqué de se mettre à linux n'ont jamais essayé de comprendre une fille.
Avatar de l’utilisateur
alton
Co-administrateur
Co-administrateur
 
Messages: 664
Inscription: Ven 1 Fév 2008 11:57
Tchup`s - points: 180.00

Messagede Tchupa » Mar 28 Avr 2009 18:33

Oui, il fait de gros effort du coté commentaire et pédagogie, en même temps avec moi il a pas le choix mdr!!
Vu que je comprends pas très vite, il va devenir prof c'est notre futur Marmote59 !!!!!! :jap::impressive:
:throb: ღ ♥Kornette | Blog de Tchupa Corporate
Avatar de l’utilisateur
Tchupa
Fondateur
Fondateur
 
Messages: 4209
Inscription: Dim 25 Déc 2005 18:27
Tchup`s - points: 830.00
Localisation: In My Mind


Retourner vers Langage C et C++

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités