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 :

Fermeture de fenêtre(s)


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut Fermeture de fenêtre(s)
    Bonjour

    Je décris l'environnement :
    Fenêtre principale A => à partir de là, on peut ouvrir une fenêtre B => à partir de là, on peut ouvrir une fenêtre C

    J'aimerai mettre sur la fenêtre B un bouton qui ferme la fenêtre B et la fenêtre C.

    Comment faire ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    En termes d'ergonomie utilisateur, je trouve ça assez crade...
    http://library.gnome.org/devel/hig-book/stable/

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    La fenêtre C n'est ici que pour intervenir sur la fenêtre B. Si la fenêtre B disparaît, la fenêtre C n'a plus raison d'être.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Il faut que tu indiques à la fenêtre C qu'elle est liée avec la fenêtre B. Pour ca tu as la fonction gtk_widget_set_parent ();. Ensuite il te suffit d'indiquer que tu veux que C se détruise si son parent est détruit avec la fonction gtk_window_set_destroy_with_parent ();.

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Je vais regarder ça !
    Je viens de faire un montage plus complexe...

    La fonction parent passe un tableau de pointeurs à la fonction fils. Le fils initialise un champs de ce tableau à l'adresse de sa fenêtre principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
      ((gpointer*)param)[3]=(gpointer)pWindow;
    Ceci m'a permis en début de la fonction fils de vérifier qu'elle n'était pas déjà existante, car initialemant, ce champ vaut NULL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if (((gpointer*)param)[3]) return; /* si le père a déjà un fils équivalent : disparaître */
     tparam[4]=((gpointer*)param)+3; /* signaler la disparition de la fenêtre au père */
    Et comme ça, quand je tue la fenêtre père, je tue aussi la fenêtre fils :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void fin_perso(GtkWidget *p_widget, gpointer param)
    {
     if (((GtkWidget **)param)[3]) g_signal_emit_by_name (((GtkWidget **)param)[3],"destroy");
     free(*((unsigned short **)(param)+1));
     free(*((unsigned short **)(param)+2));
     free(param);
     
     /* parametres inutilises */
     (void)p_widget;
    }
    Et il faut penser en tuant le fils de remettre à zéro son champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void fin_modif_caract(GtkWidget *p_widget, gpointer param)
    {
     *(((gpointer**)param)[4])=NULL; /* signaler au père que le fils est mort  pour pouvoir en ouvrir un autre */
     free(*((unsigned short **)(param)+2));
     free(param);
     
     (void)p_widget;
    }
    nb : je venais répondre à ma question quand j'ai vu ta réponse.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

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

Discussions similaires

  1. [Javascript][VBScript]Détection de Fermeture de Fenêtre
    Par JohnBlatt dans le forum Windows
    Réponses: 1
    Dernier message: 24/01/2007, 16h09
  2. fermeture de fenêtre
    Par fontaigo dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/04/2006, 21h17
  3. [WD9] Evénement de fermeture de fenêtre
    Par EpOnYmE187 dans le forum WinDev
    Réponses: 3
    Dernier message: 14/12/2005, 10h50
  4. ouverture et fermeture de fenêtre
    Par froggies dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 11h36
  5. opération sur fermeture de fenêtre
    Par java_math dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/06/2004, 22h52

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