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+ avec C & C++ Discussion :

GTK & fenetre


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut GTK & fenetre
    Re voila, alors c'est un problème mineur, mais génant, mon programme (comme les habitués de mes lectures le savent) lit le port série, et, ma fenetre principale "disparait" tant que rien n'est détecté sur le port série. Petit exemple :

    je lance mon programme, je choisis le mode automatique, ma fenetre disparait, je ne fais rien, elle réapparait pas, je passe un badge, elle trouve des données sur le port série, elle réapparait. Mais la question est pourquoi disparait-elle? je met le code, ce sera plus simple je pense pour trouver "le coupable" (il est un peu long ^^)
    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
    111
    112
    113
    114
    115
    116
    117
     
    //**********************************************************************************************/
    //                                                                                             //
    //                  C R E A T I O N    D U    M E N U    A U T O M A T I Q U E                 //
    //                                                                                             //
    //**********************************************************************************************/
    void ModeAuto(GtkWidget *widget, gpointer data, GtkWidget * MainWindow, GtkWidget * WindowManu)
    {    
        gtk_widget_destroy(MainWindow);
        gtk_widget_destroy(WindowManu);
        /* Variables */
        GtkWidget * WindowAuto = NULL;
        GtkWidget * LabelGeneral = NULL;
        GtkWidget * LabelNomM = NULL;
        GtkWidget * LabelPrenomM = NULL;
        GtkWidget * LabelNoBadgeM = NULL;
        GtkWidget * LabelSoldeM = NULL;
        GtkWidget * LabelNbRepM = NULL;
        GtkWidget * LabelNbReloadM = NULL;
        GtkWidget * Layout = NULL;
        GtkWidget * pButton[4];
        /* Création de la fenêtre */
        WindowAuto = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        g_signal_connect(G_OBJECT(WindowAuto), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
        gtk_window_set_title(GTK_WINDOW(WindowAuto), "Mode Automatique");
        gtk_window_set_default_size(GTK_WINDOW(WindowAuto), 1024, 768);
        gtk_window_set_position(GTK_WINDOW(WindowAuto), GTK_WIN_POS_CENTER);
        Layout = gtk_layout_new (NULL,NULL);
        gtk_container_add(GTK_CONTAINER(WindowAuto), GTK_WIDGET(Layout));
        /*Couleur bleu pale du layout*/
        	GdkColor color;
    	//RGB(246^2,249^2,252^2)
    	color.pixel = 0;
    	color.red=60516;
    	color.green=62001;
    	color.blue=63504;
    	gtk_widget_modify_bg(GTK_WIDGET(Layout), GTK_STATE_NORMAL, &color);
    //Création du "menu"
        /* Creation des boutons */
        pButton[0] = gtk_button_new_with_label("Mode Manu");
        pButton[1] = gtk_button_new_with_label("Retour Accueil");
        pButton[2] = gtk_button_new_with_label("Quitter");
        pButton[3] = gtk_button_new_with_label("Valider");
        /* Positionnement des Boutons */
        gtk_layout_put (GTK_LAYOUT(Layout),pButton[3],500,400);
        gtk_layout_put (GTK_LAYOUT(Layout),pButton[1],600,400);
        gtk_layout_put (GTK_LAYOUT(Layout),pButton[0],500,450);
        gtk_layout_put (GTK_LAYOUT(Layout),pButton[2],600,450);
        /* Création des labels */
        LabelGeneral = gtk_label_new("");
        LabelNomM = gtk_label_new("");
        LabelPrenomM = gtk_label_new("");
        LabelNoBadgeM = gtk_label_new("");
        LabelSoldeM = gtk_label_new("");
        LabelNbRepM = gtk_label_new("");
        LabelNbReloadM = gtk_label_new("");
        /* Initialisation des labels */
        gtk_label_set_markup(GTK_LABEL(LabelGeneral), "<span font_desc=\"Times New Roman italic 48\"foreground=\"#0000FF\">Mode Automatique</span>\n");
        gtk_label_set_markup(GTK_LABEL(LabelNomM), "<span font_desc=\"Times New Roman 12\">Nom : </span>\n");
        gtk_label_set_markup(GTK_LABEL(LabelPrenomM), "<span font_desc=\"Times New Roman 12\">Prenom : </span>\n");
        gtk_label_set_markup(GTK_LABEL(LabelNoBadgeM), "<span font_desc=\"Times New Roman 12\">No Badge : </span>\n");
        gtk_label_set_markup(GTK_LABEL(LabelSoldeM), "<span font_desc=\"Times New Roman 12\">Solde : </span>\n");
        gtk_label_set_markup(GTK_LABEL(LabelNbRepM), "<span font_desc=\"Times New Roman 12\">Nbr de tickets pour le repas : </span>\n");
        gtk_label_set_markup(GTK_LABEL(LabelNbReloadM), "<span font_desc=\"Times New Roman 12\">Nbr de tickets pour rechargement : </span>\n");    
        /* Positionnement des Label */
        gtk_layout_put (GTK_LAYOUT(Layout),LabelGeneral,0,0);
        gtk_layout_put (GTK_LAYOUT(Layout),LabelNomM,50,120);
        gtk_layout_put (GTK_LAYOUT(Layout),LabelPrenomM,50,180);
        gtk_layout_put (GTK_LAYOUT(Layout),LabelNoBadgeM,50,240);
        gtk_layout_put (GTK_LAYOUT(Layout),LabelSoldeM,50,300);
        gtk_layout_put (GTK_LAYOUT(Layout),LabelNbRepM,500,180);
        gtk_layout_put (GTK_LAYOUT(Layout),LabelNbReloadM,500,240);
        /* Création des zones */    
        tableau[0].ZoneNomM = gtk_entry_new();
        tableau[0].ZonePrenomM = gtk_entry_new();
        tableau[0].ZoneNoBadgeM = gtk_entry_new();
        tableau[0].ZoneSoldeM = gtk_entry_new();
        tableau[0].ZoneNbRepM = gtk_entry_new();
        tableau[0].ZoneNbReloadM = gtk_entry_new();
        /* Lecture Port com*/
        char * Tab ;
        Tab = LecturePort();
        FermeCom();
        /* Affectation des zones */
        int Code = 0;
        Code = (int)Tab ;
        free(Tab);
        char chaine[20];
        sprintf(chaine, "%d", Code);
        gtk_entry_set_text(GTK_ENTRY(tableau[0].ZoneNoBadgeM),chaine);
        gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZoneNomM), FALSE);
        //ELEMENT element[1000];
        int i, nombrelement = LectureFichier("tutu2.txt", element);
        for(i = 0; i < nombrelement; i++){
                  if(strcmp(chaine,element[i].code)==0){
                         gtk_entry_set_text(GTK_ENTRY(tableau[0].ZonePrenomM),element[i].prenom);
                         gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZonePrenomM), FALSE);
                         gtk_entry_set_text(GTK_ENTRY(tableau[0].ZoneNomM),element[i].nom);
                         gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZoneNomM), FALSE);
                         gtk_entry_set_text(GTK_ENTRY(tableau[0].ZoneSoldeM),element[i].solde);
                         gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZoneSoldeM), FALSE);
                  }
        }
        /* Positionnement des Zones */
        gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNomM,160,120);
        gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZonePrenomM,160,180);
        gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNoBadgeM,160,240);
        gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneSoldeM,160,300);
        gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNbRepM,550,200);
        gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNbReloadM,550,260);
        /* Affichage */
        gtk_widget_show_all(WindowAuto);
        g_signal_connect(G_OBJECT(pButton[0]), "button-press-event", G_CALLBACK( ModeManuel ), WindowAuto);
        g_signal_connect(G_OBJECT(pButton[1]), "button-press-event", G_CALLBACK( AccueilCreation ), WindowAuto);
        g_signal_connect(G_OBJECT(pButton[2]), "button-press-event", G_CALLBACK(  Quitter ), WindowAuto);
        g_signal_connect(G_OBJECT(pButton[3]), "button-press-event", G_CALLBACK(  Valider2 ), &tableau);
    }
    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
     
    //**********************************************************************************************/
    //                                                                                             //
    //           L E C T U R E   P O R T    C O M                                                  //
    //                                                                                             //
    //**********************************************************************************************/
    char * LecturePort(){
         	//Ouverture port série
    	g_ErrCom=OuvreCom(PORT1,V9600,BITS_8,PAS_DE_PARITE,BIT_DE_STOP_1);
    	unsigned char* TrameRecue[25];
           unsigned int NbMaxCar=25;
           unsigned int NbCarRecus;
    	unsigned int cpt;
    	cpt=0;
    	while (cpt!=25)
    	{
    		TrameRecue[cpt] = NULL;
    		cpt=cpt+1;
    	}
           int tmpp = 0;
           while (*TrameRecue == 0 ) {
                  ReceptionCom(TrameRecue,NbMaxCar,&NbCarRecus);
           if(*TrameRecue != NULL)
           {
               // traitement
               char TrameTmp[25];
               int cpt2 = 0 ;
               while (cpt2!=25)
    	    {
                  TrameTmp[cpt2] = '0' ;
                  cpt2++;
               }
               itoa((int)*TrameRecue, TrameTmp, 2);
           }
           tmpp++;
           }
           return *TrameRecue ;
    }

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu peux pas debugger ton code toi même ? J'ai survolé rapidement ton code, je ne vois pas de code de cachage de fenêtre, et ton explication n'est pas des plus limpides non plus. Ta fenêtre redisparaît après s'être affichée ?

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    bah oui, elle s'affiche, elle disparait le temps de lire le port série, et réapparait, et je ne sais pas pourquoi.... puisque justement, il n'y a rien pour cacher la fenêtre... et je débug mon code moi meme quand je le peux, ce que je fais depuis ce matin dailleur, et comme ca, je ne trouve pas l'erreur, je post ici et pendant ce temps je ne glande pas, j'essaye de régler mon écriture fichier qui ne se fait pas comme je le voudrais.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ah ok, donc tu nous sous-traites ton boulot de debuggage quoi...

    "Disparaître", ça veut dire que la fenêtre n'est pas du tout affichée à l'écran ? Ou bien que ta fenêtre n'est plus du tout rafraichie et que donc t'as un rectangle gris à l'endroit où ta fenêtre devrait être ?

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    Citation Envoyé par teuf13
    Ah ok, donc tu nous sous-traites ton boulot de debuggage quoi...

    "Disparaître", ça veut dire que la fenêtre n'est pas du tout affichée à l'écran ? Ou bien que ta fenêtre n'est plus du tout rafraichie et que donc t'as un rectangle gris à l'endroit où ta fenêtre devrait être ?
    mais non tu ne comprend pas, je ne sous traite pas, je demande de l'aide quand je ne vois pas ..... je regarde et j'essaye de comprendre (et si je peux de corriger) avant de poster ici. Comme je ne comprend pas, je post, c'est tout simple
    (ps: je ne peux plus me permettre de passer 2 jours à essayer de voir une erreur car je dois finir pour d'ici moins d'une semaine... donc c'est pour ca que j'ai dit, quand je ne comprend pas, je post ici et je fais autre chose en meme temps )

    Donc ma fenêtre se lance avec mon programme, je clique sur mode automatique (ce mode lit le port série) hop ma fentetre disparait (meme dans la barre des taches, quand je suis en mode console, j'ai la console qui apparait, sinon rien) le passe un badge dans mon lecteur, le pc reçoit donc les données et hop elle réapparait avec le N° du badge dans la zone n° badge.
    C'est génant, car apres je dois rajouter un bouton pour pouvoir cliquer dessus et arreter la lecture au cas ou la personne qui passe n'aurait pas de badge, donc si ma fenêtre disparait, on ne peut cliquer pour stopper....

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Si LecturePort bloque jusqu'à ce qu'elle ait reçu des données, ça peut expliquer que ta fenêtre ne s'affiche pas tout de suite.
    schématiquement, ton code a l'air de ressembler à ça
    gtk_widget_destroy (fenetre);
    /* recreation de fenetre */
    LecturePort();
    gtk_widget_show_all (fenetre);


    Et si c'est ça le pb, ça n'a absolument rien à voir avec un pb de gtk+, c'est exactement ce que j'appelle nous refiler ton boulot de debuggage...

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    mais on a le droit de faire plusieurs gtk_show_all dans un fichier? je pensais qu'on ne pouvait en mettre qu'un seul à la fin pour tout afficher je n'avais pas vu que ca pouvait etre ca.
    Excuse moi si tu penses que je te "refile" le boulot, mais ce n'est pas le cas, cela fait 3 semaines que je suis sur gtk, j'ai encore plein de truc a faire, je pense a plein de truc pour ce projet, la date de fin approche, et défois une petite erreur toute bête ne se voit pas
    je vais tester ce truc.

    EDIT:
    je viens de tester de rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_show_all(WindowAuto);
    juste avant la lecture, et ca m'affiche ma fenetre, mais pas ce qu'il y a dedans, les zone sont créées apres la lecture, mais les labels sont créés avant.... donc ils devraient s'afficher en théorie.

  8. #8
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    s'il te plait teuf13 tu ne peux pas m'aider, je viens de finir ma macro excel pour transformer un fichier tout pas beau en fichier exploitable par mon programme, de finir l'écriture, lecture fichier quand je suis en mode automatique ou mode manuel. Il ne me reste plus que cette anomalie et je ne vois pas pourquoi cela agit comme ca j'ai pourtant essayé comme tu as dit, de mettre un gtk_show_all avant l'appel a lecture, mais il me créé juste ma fenetre et pas les labels qui sont pourtant créé, initialisé et positionné avant le show

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    T'as oublié de préciser où t'en es dans ton debuggage depusi hier, ce que tu as trouvé et ce qui pose encore pb.

  10. #10
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    bah toujours cette erreur, j'ai essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    gtk_layout_put (GTK_LAYOUT(Layout),pButton[4],600,150);
    gtk_widget_show_all(WindowAuto);
    /* Lecture Port com*/
    char * Tab ;
    Tab = LecturePort();
    button 4 étant un boutton "annulé" il m'affiche mon layout mais rien dedans, pourtant il devrait m'afficher mon bouton au moin ( et les labels déclaré au dessus )

    j'ai essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gtk_window_show(layout);
    char * Tab ;
    Tab = LecturePort();
    je ne vois pas essayé quoi d'autres, j'ai beau retourné le problème dans tous les sens, je ne comprend pas pourquoi il ne m'affiche pas mes labels et mon bouton avant de faire la lecture, je peux te montrer un screen de ce qu'il faut (j'ai utilisé le premier code que j'ai mis ci dessus ) :
    Je lance mon programme :
    http://img359.imageshack.us/img359/626/image1xq1.jpg
    je clique sur mode auto :
    http://img359.imageshack.us/img359/8708/image2oi0.jpg
    je passe mon badge :
    http://img174.imageshack.us/img174/895/image3rr6.jpg

  11. #11
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    Arf ca ne fonctionne pas, et c'est logique, ma lecture port com, au lieu de la "whilé" jusqu'a trouvé quelque chose, elle lit une seule fois, et il faudrait comme par hasard passer le badge pile a ce moment la
    j'avais testé comme ca :

    dans mon mode auto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        gtk_widget_show_all(WindowAuto);
        /* Lecture Port com*/
        char * Tab ;
        while (Tab == 0 ) {
               Tab = LecturePort();
               gtk_widget_show_all(WindowAuto);
        }
        FermeCom();
    et dans ma lecture port com :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           //while (*TrameRecue == 0 ) {
                  printf("Reception\n");
                  ReceptionCom(TrameRecue,NbMaxCar,&NbCarRecus);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           while (*TrameRecue == 0 ) {
                  printf("Reception\n");
                  ReceptionCom(TrameRecue,NbMaxCar,&NbCarRecus);
    Edit :
    je viens de retester un pti truc, en mettant plusieurs fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReceptionCom(TrameRecue,NbMaxCar,&NbCarRecus);
    dans ma lecture, ca me lit bien mon code, mais ne m'affiche pas mon bouton ni mes labels

    et en y réfléchissant, le soucis que j'ai n'est pas exactement le meme que la personne sur l'autre forum, car elle voudrait afficher des infos au fur et a mesure de sa procédure de lecture. Moi j'aimerais juste afficher les labels avant, et c'est ca qui me choque car les labels sont déclarés Avant l'appelle a lecture, et je fais un gtk_window_show_all avant la lecture, pourtant il ne m'affiche que mon layout vide

  12. #12
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    D'après l'image 2, la fenêtre ne disparait pas juste son contenu qui ne s'affiche pas ?

    Faire un gtl_widget_show_all ne donnera rien puisque cette fonction permet de rendre visible un widget, il faut laisser la main à gtk pour qu'il rafraichisse l'application : Mon programme se bloque lorsque j'utilise les threads ?

  13. #13
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par gege2061
    Faire un gtl_widget_show_all ne donnera rien puisque cette fonction permet de rendre visible un widget, il faut laisser la main à gtk pour qu'il rafraichisse l'application : Mon programme se bloque lorsque j'utilise les threads ?
    A ce sujet, je trouve cette entrée de la faq pas trop compréhensible, voire dangereuse en fonction de ce que l'auteur a voulu dire.
    De mon point de vue, en présence de threads avec gtk+, il y a 2 approches possibles, soit comprendre et connaître sur le bout des doigts http://developer.gnome.org/doc/API/2...k-Threads.html , soit ne pas utiliser de threads mais utiliser à la place des g_idle_add, des GIOChannels ou toute autre technique appropriée, la solution proposée dans la FAQ étant une des moins "propres" à mon avis.

  14. #14
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    bah il les affiche des qu'il les rend visible? ou ca fonctionne autrement?

    j'ai lu le petit texte, mais je ne comprend pas comment je dois me servir de ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (gtk_events_pending ())
    {
      gtk_main_iteration ();
    }

  15. #15
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    L'affichage est mis à jour par gtk+ au sein de sa main loop, c'est à dire lorsqu'aucun callback gtk+ ne tourne. Donc non, la mise à jour d l'affichag n'est pas immédiate

  16. #16
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    ah bah d'accord, voila je n'avais pas vu ou lu quand j'ai appris il y a quelques semaines, je comprend mieux du coup, mais apparement la boucle ci dessus sert a palier a ce problème, mais je m'en sert comment?




    (bon apétit a ceux qui vont manger )

  17. #17
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    Tout ceci vient de me faire penser a une autre solution plutot matériel que programmable, il suffirait que la "caissiere" ait un badge qu'elle utiliserais quand une personne n'aurait pas de badge, comme ca, meme si la lecture du badge a commencé, hop elle passe le sien, ca passe en mode manuel, et elle peut regler quand meme le paiement
    mon tuteur de stage n'est pas la, je lui en parle cette apres midi, si il me dit oui je vous le dirait, et je n'aurais plus de question "bebete" à vous poser

    sinon je suis quand meme interessé par la maniere dont on se sert de cette boucle

  18. #18
    Membre averti
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 32
    Par défaut
    Bon voila, j'ai discuté avec lui, et cette solution a été adopté, par contre, pour une futur utilisation on ne sais jamais, si je refais du C un de ses 4, comment ca fonctionne ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (gtk_events_pending ())
    {
      gtk_main_iteration ();
    }
    et je tenais aussi à vous remercier, tout ce qui m'ont aidé a mener a bien ce projet merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. les fenetres fils en gtk+
    Par opensource dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 05/09/2007, 14h45
  2. rafraichir ou mettre à jour la fenetre GTK (ou GTK+ ?) ... :s
    Par lirakien95 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 12/03/2007, 21h20
  3. GTK fenetre transparente
    Par jamfr73 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 23/10/2006, 14h41
  4. Commander des fenêtres gtk avec le shell
    Par clebig dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 31/07/2006, 10h47
  5. probleme execution(fenêtre gtk)
    Par argon dans le forum GTK+ avec C & C++
    Réponses: 15
    Dernier message: 01/05/2006, 11h25

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