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 :

comment rafraichir un widget ou la fenetre ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut comment rafraichir un widget ou la fenetre ?
    j'ecrit une donnée qui varie en temps réel dans un GtkTextView .
    mais des fois je la vois varier (c'est le but);et des fois je la vois figé , mais quand je réduit la fenétre et je la remet , ca recommence a bouger , est ce que c'est du au rafraichissement des widgets ?
    quelqu'un sait si ca existe une fonction qui permet de rafraichir la fenetre ???

  2. #2
    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
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,

    Citation Envoyé par coax81
    quelqu'un sait si ca existe une fonction qui permet de rafraichir la fenetre ???
    Si le traitement est trop lourd, tu peux redonner la main à GTK pour qu'il mette à jour l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (gtk_events_pending ())
    {
      gtk_main_iteration ();
    }

  3. #3
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    il faut la mettre ou cette boucle ?

  4. #4
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    en faite c'est pas un traitement très lourd , c'est juste une variable qui s'incremente .

  5. #5
    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
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par coax81
    en faite c'est pas un traitement très lourd , c'est juste une variable qui s'incremente .
    Lourd ne veux pas dire compliqué, si tu incrémente ta variable dans une boucle, il est fort possible que tu monopolise le processeur, dans ce cas GTK ne peux pas faire d'autres choses.

    La boucle tu n'a met ou tu veux, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (1)
    {
      i++;
      while (gtk_events_pending ())
      {
        gtk_main_iteration ();
      }
    }

  6. #6
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    en faite j'utilise un g_iddle_add qui appel une fonction thread qui s'en charge de cette ecriture en temps réel ; donc ca existe dans une fonction séparée du main...

    je sais pas si mon code est vraiment bien fait ....pourriez vous me donner vos
    conseils et critiques s'il vous plais .. surtout en ce qui concerne la creation du thread. je te remercie.

    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
     
     void *alert (gpointer *data)
    {
        int i;
        int val;
        while(1)
        {
             //----------------------PASSE EN COURS--------------------------/
     
                    TrameRead(buffer2,1,03, //buffer ,esclave, fonction
                               0xE192,		//adresse
                               0x0002,		//Nombre ADD
                               0xffff		//CRC 16
                               );
                    LectureCOM( retour2, 9);
            //--------------------------------------------------------------/
            val=retour2[6];
            gchar * strr =g_strdup_printf("PASSE EN COURS: %d \n",val);
            gtk_text_buffer_set_text(GTK_TEXT_BUFFER(data),strr,-1);
            for(i=1;i<100000000;i++){}
     
        }
    }
     
    gboolean th_fonc(gpointer data)
    {
        gdk_threads_enter();
        g_thread_create(alert,data,FALSE,NULL);
        gdk_threads_leave();
    }
     
     
    int main(int argc, char **argv)
    {
        GtkWidget *pWindow;
        GtkWidget *pVBox,*pVBox2;
     
        g_thread_init (NULL);
        gdk_threads_init ();
        gdk_threads_enter ();
     
        gtk_init(&argc, &argv);
     
               /*    .
                      .
                      .
                  */
     
        g_idle_add(th_fonc,p_buff);
     
        while (gtk_events_pending ()) {  gtk_main_iteration (); }
     
        gtk_main();
        gdk_threads_leave ();
        return EXIT_SUCCESS;
     
    }

Discussions similaires

  1. comment modifier les widgets dans une fenètre??
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 14/10/2005, 14h48
  2. Réponses: 5
    Dernier message: 24/05/2005, 12h31
  3. [CR9][VB6]Comment rafraichir un etat ?
    Par GeniuZ dans le forum SDK
    Réponses: 2
    Dernier message: 15/02/2005, 09h10
  4. Réponses: 15
    Dernier message: 17/01/2005, 17h08
  5. Comment rafraichir le swf ?
    Par oazar dans le forum Flash
    Réponses: 3
    Dernier message: 17/10/2003, 13h08

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