IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ Discussion :

Problème de GtkTable


Sujet :

GTK+

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut Problème de GtkTable
    Bonjour à tous!

    Je vous sollicite dans l'espoir que vous trouviez mon erreur, car moi je ne la vois pas!

    J'ai une fonction, init_tab_jeu, qui initialise un tableau de jeu à 0, sauf sur les bords où les cases valent 1.

    Je vous poste un bout du main, là où mon problème se pose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    int init_tab_jeu (int tab_jeu[NB_LIGNES][NB_COLONNES]);
     
    int i=0,j=0;
     
    for (i=0;i<NB_LIGNES;i++)
    {
     
           for (j=0;j<NB_COLONNES;j++)
           {
            if (tab_jeu[i][j]==0)
                {
                    gtk_table_attach_defaults(table, carre_noir,
                    j, j+1, i, i+1);
                }
     
            if (tab_jeu[i][j]==1)
                {
                    gtk_table_attach_defaults(table, carre_blanc,
                    j, j+1, i, i+1);
                }
           }
     
    }
    avec table définie telle que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table = gtk_table_new(NB_LIGNES, NB_COLONNES, TRUE);
    et carre_noir défini tel que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    carre_noir = gtk_image_new_from_file("sources/carrenoir.jpg");
    Comment ça se fait que j'observe ça dans ma fenêtre?

    Nom : Sans titre-1 copie.jpg
Affichages : 73
Taille : 26,5 Ko


    Merci à ceux qui prendront le temps de me répondre, et merci d'avance pour vos réponses.

    Cordialement.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    À priori je penche pour un contenu de tab_jeu[][] non conforme à tes attentes. Il doit y avoir autre chose que des 0 et des 1. Affiche en console le contenu de ce tableau dans la boucle j histoire d'être sûr de son contenu.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Bonjour, merci beaucoup pour ta réponse si rapide!

    Pour ce qui est du tableau de jeu, la fonction est pourtant correcte (je l'avais testée sur ma console en C avant de passer au GTK).

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Si tu es sûr du contenu du tableau alors tu ne peux peut-être pas afficher le même widget à plusieurs endroits. carre_noir (et aussi carre_blanc je suppose) doivent être initialisés à chaque fois que tu veux les insérer dans la table.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    J'ai modifié mon code de la boucle for comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    for (i=0;i<NB_LIGNES;i++)
    {
     
           for (j=0;j<NB_COLONNES;j++)
           {
            if (tab_jeu[i][j]==0)
                {
                    gtk_table_attach_defaults(table, carre_noir,
                    j, j+1, i, i+1);
     
                }
     
            if (tab_jeu[i][j]==1)
                {
                    gtk_table_attach_defaults(table, carre_blanc,
                    j, j+1, i, i+1);
                }
                    carre_noir=NULL;
                    carre_noir = gtk_image_new_from_file("sources/carrenoir.jpg");
                    carre_blanc=NULL;
                    carre_blanc = gtk_image_new_from_file("sources/carreblanc.jpg");
           }
     
    }

    et j'obtiens celà :

    Nom : Sans titre-2.jpg
Affichages : 64
Taille : 27,9 Ko


    C'est mieux, mais il me manque encore des carrés ^^

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Il ne faut pas faire comme ca. Tu alloues des widgets qui ne seront jamais utilisés -> perte de mémoire.

    Il faut initialiser dans les {} des if.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    for (i=0;i<NB_LIGNES;i++)
    {
     
           for (j=0;j<NB_COLONNES;j++)
           {
            if (tab_jeu[i][j]==0)
                {
                    gtk_table_attach_defaults(table, gtk_image_new_from_file("sources/carrenoir.jpg"),
                    j, j+1, i, i+1);
     
                }
     
            if (tab_jeu[i][j]==1)
                {
                    gtk_table_attach_defaults(table, gtk_image_new_from_file("sources/carreblanc.jpg"),
                    j, j+1, i, i+1);
                }
           }
    }
    Si ce code fonctionne ensuite il est plus intéressant de ne charger qu'une seule fois les images depuis le disque et ensuite d'en faire des copies en mémoire. Moins d'accés disque.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    J'obtiens quelque chose de similaire à ma dernière capture d'écran, la position des carrés changent..
    Je poste le code de mon init_tab_jeu, au cas où , mais il fonctionnait très bien avant le passage au GTK.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    int init_tab_jeu (int tab_jeu[NB_LIGNES][NB_COLONNES])
    {int i=0,j=0;
     
    for (i=0; i<NB_LIGNES; i++) // Mise à 0 des cases dans le tableau de jeu
     
    {   for (j=0; j<NB_COLONNES; j++)
     
        {
            tab_jeu[i][j] = 0;
        }
    }
     
    for (i=4; i<NB_LIGNES; i++) // Mise à 1 des cases sur les côtés sauf sur les 4 premières lignes
     
    {
        tab_jeu[i][0] =1;
        tab_jeu[i][NB_COLONNES-1] = 1;
     
    }
     
    for (i=0;i<NB_COLONNES;i++) // Mise à 1 de la ligne du fond
     
    {
        tab_jeu[NB_LIGNES-1][i] = 1;
    }
     
    return 0;
    }

  8. #8
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Ton code fonctionne parfaitement chez moi. Je te donne le code que j'ai écrit pour l'essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*-  */
    /*
     * main.c
     * Copyright (C) 2014 Gerald Dumas <gerald.dumas@laposte.net>
     * 
     * test is free software: you can redistribute it and/or modify it
     * under the terms of the GNU General Public License as published by the
     * Free Software Foundation, either version 3 of the License, or
     * (at your option) any later version.
     * 
     * test is distributed in the hope that it will be useful, but
     * WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     * See the GNU General Public License for more details.
     * 
     * You should have received a copy of the GNU General Public License along
     * with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
     
     
    #include <math.h>
    #include <gtk/gtk.h>
     
    const int NB_LIGNES=10;
    const int NB_COLONNES=10;
     
    int init_tab_jeu (int tab_jeu[NB_LIGNES][NB_COLONNES])
    {
    	int i=0,j=0;
     
    	for (i=0; i<NB_LIGNES; i++) // Mise à 0 des cases dans le tableau de jeu
     
    		{   for (j=0; j<NB_COLONNES; j++)
     
    				{
    					tab_jeu[i][j] = 0;
    				}
    		}
     
    	for (i=4; i<NB_LIGNES; i++) // Mise à 1 des cases sur les côtés sauf sur les 4 premières lignes
     
    		{
    			tab_jeu[i][0] =1;
    			tab_jeu[i][NB_COLONNES-1] = 1;
     
    		}
     
    	for (i=0;i<NB_COLONNES;i++) // Mise à 1 de la ligne du fond
     
    		{
    			tab_jeu[NB_LIGNES-1][i] = 1;
    		}
     
    	return 0;
    }
     
     
    int
    main(int argc, char *argv [])
    {
    	GtkWidget *window = NULL;
    	GtkWidget *table=NULL;
    	int i, j;
     
    	int tab_jeu[NB_LIGNES][NB_COLONNES];
     
      // Initialisation de Gtk
      gtk_init(&argc, &argv);
     
     
      // Création d'une fenêtre principale
      window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     
    	// Création d'une table
    	table = gtk_table_new(NB_COLONNES, NB_LIGNES, TRUE);
      gtk_container_add(GTK_CONTAINER(window), table);
     
    	// Initialisation du tableau de jeu
    	init_tab_jeu (tab_jeu);
     
    	// Ajout des images dans la table en fct de tab_jeu
    	for (i=0;i<NB_LIGNES;i++)
    		{
     
    			for (j=0;j<NB_COLONNES;j++)
    				{
    					if (tab_jeu[i][j]==0)
                {
    							gtk_table_attach_defaults(GTK_TABLE(table), gtk_label_new ("0"),	j, j+1, i, i+1);
     
                }
     
    					if (tab_jeu[i][j]==1)
                {
    							gtk_table_attach_defaults(GTK_TABLE(table), gtk_label_new ("1"), j, j+1, i, i+1);
                }
    				}
    		}
     
      // Affectation des différents signaux
      g_signal_connect(G_OBJECT(window), "delete_event", (GCallback)gtk_main_quit, NULL);
     
      // Affichage du tout.
      gtk_widget_show_all(window);
     
      // Boucle principale
      gtk_main();
     
      return 0;
    }

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Effectivement, en ouvrant un nouveau projet, ton code fonctionne également chez moi.
    Mais dans mon projet actuel, ça ne fonctionne pas.
    Je poste le main entier.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    int main (int argc, char *argv[])
    {
        gtk_init(&argc,&argv);
     
        GtkWidget *window=NULL,*conteneur=NULL,*bouton1,*darea=NULL, *table=NULL;
        GtkWidget *carre_noir,*carre_blanc;
     
            carre_blanc = gtk_image_new_from_file("sources/carreblanc.jpg");
            carre_noir = gtk_image_new_from_file("sources/carrenoir.jpg");
     
        int tab_jeu[NB_LIGNES][NB_COLONNES];
     
    //  CREATION FENETRE
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(window, 800,500);
        gtk_window_set_title(window, "Jeu");
     
    //  CREATION CONTENEUR
        conteneur = gtk_fixed_new();
        gtk_container_add(window,conteneur);
     
     
    // CREATION GTK TABLE
     
        table = gtk_table_new(NB_LIGNES, NB_COLONNES, TRUE);
        gtk_container_add(conteneur, table);
     
     
    // TEST
     
    int init_tab_jeu (int tab_jeu[NB_LIGNES][NB_COLONNES]);
     
    int i=0,j=0;
     
    for (i=0;i<NB_LIGNES;i++)
    {
           for (j=0;j<NB_COLONNES;j++)
           {
            if (tab_jeu[i][j]==0)
                {
                    gtk_table_attach_defaults(table, gtk_label_new ("0"),
                    j, j+1, i, i+1);
     
                }
     
            if (tab_jeu[i][j]==1)
                {
                    gtk_table_attach_defaults(table, gtk_label_new ("1"),
                    j, j+1, i, i+1);
                }
           }
     
    }
     
     
    // CREATION D'UN BOUTON 
     
        bouton1 =gtk_button_new_with_label("Bouton");
        gtk_widget_set_size_request(bouton1, 100,100);
        gtk_container_add(conteneur,bouton1);
        gtk_fixed_put(conteneur,bouton1, 650,20);
     
     
    // FERME LA FENETRE
        g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit), NULL );
     
        gtk_widget_show_all(window);
        gtk_main();
        return 0;
    }

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    J'ai modifié mon code très légèrement, et j'obtiens la même chose que ton code que tu m'as donné ci-dessus!

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    J'ai réussi avec les carrés!!!

    Je pense que c'est dû à l'initialisation du tab_jeu que je n'avais pas réalisé en début de main.
    J'utilise également l'astuce que tu m'as donné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gtk_table_attach_defaults(table, gtk_image_new_from_file("sources/carrenoir.jpg"),
                    j, j+1, i, i+1);
    Je te remercie beaucoup pour tes explications et ta patience!

  12. #12
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Ton erreur est toute bête. Ligne 32 tu déclares une fonction alors que tu désires plutôt l'appeler : init_tab_jeu (tab_jeu);

  13. #13
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Améliore ton code maintenant en évitant de charger à chaque fois l'image depuis le disque.

  14. #14
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Oui, je l'avais modifié également!
    Raaah je m'en veux d'avoir perdu autant de temps sur une erreur si bête!!

    J'aurai encore une petite question de "lisibilité de code".

    Est ce que je peux, dans ma fonction init_tab_jeu (qui est dans un .h dans mon projet), y incorporer directement l'affichage GTK que je veux à la fin? Est-ce correct?

    Je ne sais pas si ma question est claire, c'est pour éviter de "polluer" mon main que je souhaiterai faire cela.
    Je sais que ça fonctionne (je viens d'essayer), mais je voudrai savoir si c'est dans les règles de la programmation ou non!

  15. #15
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Il n'y a aucun dictate sur l'art et la manière d'écrire son code. Maintenant il est d'usage, mais ce n'est pas pour rien, d'avoir un main(); le plus concis possible.

    Donc, les boucles de création de ta fenêtres ne devraient pas se trouver dans celle-ci. De plus, plus tu découpes ton code en fonction plus facile en sera la maintenance et/ou la modification.

    Après, c'est à toi de voir...

  16. #16
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Améliore ton code maintenant en évitant de charger à chaque fois l'image depuis le disque.

    J'ai créé une autre variable GtkWidget *m_carre_noir que j'ai initialisé à carre_noir afin d'utiliser *m_carre_noir dans mes fonctions.
    Je ne l'ai pas fait avec les carrés blancs.

    Je m'aperçois que j'ai tous mes carrés blancs, mais qu'un seul carré noir.
    Est-il possible de la fonction gtk_table_attach_defaults ne veuille pas afficher 2 fois le même widget dans la table?

  17. #17
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Oui c'est exactement ca. Tu ne peux afficher un widget qu'une seule fois.

    Pour effectuer une copie j'utilise pour ma part les GdkPixbuf. Je charge l'image dans un GdkPixbuf puis à partir de celui-ci je crée autant de GtkImage que je veux avec la fonction gtk_image_new_from_pixbuf();. Une fois toutes les copies effectuées je détruis le GdkPixbuf avec g_object_unref();.

  18. #18
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Je vais regarder ça, pour l'utilisation de GdkPixbuf.
    Je te remercie grandement pour ton aide!

    Je ne sais pas si je dois ouvrir un nouveau sujet ou pas, mais j'ai juste une question pour appeler une fonction toutes les 1000 ms par exemple.
    Je voudrai utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gint gtk_timeout_add( guint32     interval,
                          GtkFunction function,
                          gpointer    data );
    interval correspond au temps en ms
    function correspond à la fonction que je veux appeler
    mais je ne comprends pas ce qu'est data?

  19. #19
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    data est un pointeur sur une donnée personnelle que tu peux transmettre à la fonction callback qui est appelée toutes les n intervalles.

  20. #20
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    data est un pointeur sur une donnée personnelle que tu peux transmettre à la fonction callback qui est appelée toutes les n intervalles.
    Je n'ai pas compris..
    Je voudrai qu'une pièce descende toutes les secondes. J'arrive à modéliser cette pièce dans un tableau (toujours tab_jeu) en C sur console.
    Je voudrai donc appeler ma fonction faire_descendre_piece toutes les secondes...

Discussions similaires

  1. Problème : Midifier une GtkTable Par une fonction
    Par Sephiroth_060 dans le forum GTK+
    Réponses: 0
    Dernier message: 10/05/2009, 14h05
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo