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 :

Vérifier la validité de pointeurs.


Sujet :

GTK+ avec C & C++

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut Vérifier la validité de pointeurs.
    Salut les gars GTK+,

    j'ai un petit problème (disont que c'est un problème de débutant mais je me mélange les pinceaux avec GTK+3 et gtkmm).

    J'ai fait un petit programme de musique et ont peut consulter la playlist que l'on est en train de lire.

    Celle-ci apparaît dans une Toplevel seulement le problème est que il faut la mettre a jours, quand le player change de chanson automatiquement:

    la chanson courante et écrit en gras avec une icône.


    Et donc j'ai une fonction qui affiche la playlist accessible depuis le menu

    et une fonction

    update()

    qui:

    + Vérifie si la toplevel est affichée en vérifiant si le pointeur de la fenêtre de GtkDialog est valide car définis dans une structure.

    En faite je n'arrive pas a comparer un GtkWidget * détruit ou valide avec NULL sûrement car il est détruit mais toujours définis comme variable globale...???

    Merci pour votre aide et vos réponses.

    PS: J'ai essayer avec la macro interne de GTK+3 GTK_IS_WIDGET() mais je n'y arrive pas ça plante dès que j'appelle la fonction update().
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 329
    Points : 606
    Points
    606
    Par défaut
    Je n'ai pas rencontré ce genre de problème mais dans la doc je vois deux fonctions qui peuvent peut être te servir:
    gtk_widget_in_destruction () et gtk_widget_destroyed ()
    GraceGTK: a plotting tool at https://sourceforge.net/projects/gracegtk

  3. #3
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour la réponse,

    tu as vue juste je cherche a mettre un pointeur a la valeur NULL si jamais la Toplevel n'est pas afficher,

    dans ce cas il faut que je l'initialise a NULL sinon j'ai déjà essayer avec gtk_widget_destroyed()
    cela ne semble pas fonctionner correctement car quand j'exécute update() je teste et le pointeur n'est pas NULL...

    Donc la fonction gtk_widget_destroyed() ne fait pas ce qui est dit dans la doc ou alors c'est parce que je fait cet appel après l'appel a gtk_dialog_run().

    Mais c'est un peu compliquer, car je ne peut pas regénérer la Toplevel au cas ou, elle soit afficher il faut que j'update le fenêtre.

    Parce que ca crashe, j'ai peut être trop mal implémenter ?

    Mais merci je vais essayer la fonction gtk_widget_in_destruction().


    PS: je vais essayer puis je vais vous mettre mon bout de code afin que vous y voyez plus clair.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  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
    Dixit la documentation, gtk_widget_destroyed(); doit être utilisée dans un callback attaché au signal "destroy" du widget considéré. Est-ce comme ça que tu l'utilises ?

    This function sets *widget_pointer to NULL if widget_pointer != NULL. It’s intended to be used as a callback connected to the “destroy” signal of a widget. You connect gtk_widget_destroyed() as a signal handler, and pass the address of your widget variable as user data. Then when the widget is destroyed, the variable will be set to NULL. Useful for example to avoid multiple copies of the same dialog.

  5. #5
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Non j'ai pas attacher le signal "destroy" mais j'ai résolu le problème grâce a une valeur booléen.

    C'était une question bête bêtement résolu.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  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
    Citation Envoyé par Luke spywoker Voir le message
    Non j'ai pas attacher le signal "destroy" mais j'ai résolu le problème grâce a une valeur booléen.

    C'était une question bête bêtement résolu.
    Non, pas si bête que ça. J'imagine assez bien la solution que tu as appliqué. Mais peut-être qu'il est possible, en utilisant les moyens Gtk+, de se passer d'une variable supplémentaire.

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

Discussions similaires

  1. vérifier la validité d'une date
    Par griese dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2006, 16h11
  2. [XML] php4 : vérifier la validité d'un document XML
    Par GTJuanpablo dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/05/2006, 22h29
  3. vérifier la validité d'une url (abs/rel)
    Par jacky12 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/05/2006, 13h59
  4. Vérifier la validité d'un nom de domaine d'une adresse mail
    Par pblb62 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2006, 11h20
  5. Réponses: 2
    Dernier message: 07/11/2005, 20h17

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