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 :

Probleme d'affichage d'image


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur PHP5
    Inscrit en
    Novembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur PHP5

    Informations forums :
    Inscription : Novembre 2006
    Messages : 63
    Par défaut Probleme d'affichage d'image
    les développeurs,

    Je vous explique mon problème :
    En fait, je développe une petite appli qui permet, entre autre, de pinger les PC d'un réseau et d'en faire apparaître la liste.
    Seulement pendant que je ping j'aimerais mettre une image de fond sur laquelle il y a marqué : "Veuillez patienter pendant l'opération...." et mon souci est là : en fait dans mon code, je supprime l'image d'accueil (ou la liste de PC s'il y en avait déjà une) que je remplace par la nouvelle image d'attente, ensuite j'effectue le ping, je supprime l'image d'attente que je remplace par la liste de PC. Le problème est que pendant le ping (et la construction de la liste) l'image ne s'affiche pas et l'écran est totalement vide, en fait elle s'affiche juste après le ping et disparaît immédiatement pour laisser place à la nouvelle liste donc pendant quelques secondes on a l'impression que le programme a planté (l'écran est vide et l'interface graphique du programme ne répond plus) alors que non.

    Voici mon code en simplifier :

    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
     
     
    void afficheListe(GtkWidget* widget, gpointer data){
     
         if(image!=NULL){ //si il y a deja une image
              gtk_container_remove(GTK_CONTAINER(hbox), image);
              image = gtk_image_new_from_file("attente.jpg");
              gtk_box_pack_start(GTK_BOX(hbox), image, TRUE, TRUE, 5);
     
         }
         if(pSb != NULL){//si il y a deja une liste
              gtk_container_remove(GTK_CONTAINER(hbox), pSb);
              image = gtk_image_new_from_file("attente.jpg");
              gtk_box_pack_start(GTK_BOX(hbox), image, TRUE, TRUE, 5);
     
         }
     
         gtk_widget_show_all(window);
     
        /******************************************/
        /*Code de Ping et construction de la liste*/ 
        /******************************************/
     
     
        if(image!=NULL){ 
             //ici on supprime l'image d'attente avant d'afficher la  liste des pc
              gtk_container_remove(GTK_CONTAINER(hbox), image);
              image = NULL;
        }
     
        /******************************************/
        /*Code de l'ajout de la liste a la fenetre*/
        /******************************************/ 
     
        gtk_widget_show_all(window);
     
    }
    L'impression que j'ai c'est que les opérations qui se déroule juste apres la mise a jour de l'image empèchent cette mise a jour de se faire correctement.
    Je ne vois vraiment pas comment résoudre le souci, j'ai tourné la problème dans tous les sens sans trouver....

    d'avance pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur PHP5
    Inscrit en
    Novembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur PHP5

    Informations forums :
    Inscription : Novembre 2006
    Messages : 63
    Par défaut
    Pour ceux qui s'intéresse au problème, j'ai une nouvelle info.
    Il semblerait que se soit la fonction gtk_widget_show (ou show_all) qui pose problème.
    En effet, bien qu'elle apparaissent plusieurs fois dans le code, elle semble n'être exécuter qu'une seule fois, GTK décide apparemment tout seul qu'il ne faut faire qu'un seul raffraichissement...
    J'ai essayer de décomposer le gtk_widget_show_all en plusieurs gtk_widget_show, j'ai essayer de le déplacer dans le code mais ca n'a rien changé.

    Si vous avez des pistes n'hésitez pas à ma faire signe, de mon coté je continue de chercher...

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut !


    En fait cela n'a pas grand chose à voir avec la fonction gtk_widget_show_all car elle ne fait qu'afficher les widgets donc un seul appel suffit. Pour changer l'image tu t'y prend également mal car tu n'as pas besoin de supprimer le GtkImage pour charger une nouvelle image !

    Il te suffit de vider le GtkImage courant avec la fonction gtk_image_clear (si tu dispose d'au moins la version 2.8 de GTK+) puis te charge la nouvelle image avec gtk_image_set_from_file.

    Pour ton vrai problème, je ne vois pas trop, normalement si tu affiche l'image avant elle devrait apparaître a moins que GTK+ décide du moment où il peut vraiment le faire, ca je sais pas
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur PHP5
    Inscrit en
    Novembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur PHP5

    Informations forums :
    Inscription : Novembre 2006
    Messages : 63
    Par défaut
    Je viens d'essayer avec les 2 fonctions que tu viens de me conseiller et ça change rien, toujours le même effet...
    C'est visiblement GTK qui décide quand il peut mettre à jour sa fenêtre... du coup, je vois pas trop comment faire...

    (Peux-tu me conseiller un tuto sur les gthread, je vais essayer une autre manière)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut
    Il convient de dire à la boucle Gtk de s'exécuter après la mise à jour de l'image.

    Il faut donc ajouter cela après la mise à jour de l'image (et en fait après toute mise à jour de laffichage si la fonction qui s'en occupe ne quitte pas immédiatement après) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while(gtk_events_pending())
        gtk_main_iteration();

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

Discussions similaires

  1. [Lazarus] Problème d'affichage d'images avec stretch
    Par Bernard B dans le forum Lazarus
    Réponses: 1
    Dernier message: 05/09/2006, 18h21
  2. [GD] probleme d'affichage d'image
    Par Funattitude dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 07/08/2006, 09h05
  3. Probleme d'affichage d'image dans une fenetre
    Par cgregueusse dans le forum MFC
    Réponses: 1
    Dernier message: 03/08/2005, 11h08
  4. [CR.NET] Probleme d'affichage d'image
    Par ahervieux dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 25/06/2005, 14h06
  5. Probleme d'affichage d'image
    Par nenoeil dans le forum ASP
    Réponses: 2
    Dernier message: 03/06/2005, 11h26

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