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 appelé 2 fonction dans GCallback


Sujet :

GTK+ avec C & C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut comment appelé 2 fonction dans GCallback
    bonjour jai la fonction attrape_souris(GtkWidget *widget, GdkEventButton *event, gpointer mode)
    cette fonction me permet de dessiner une pierre a chaque fois que je clic sur la souris

    au début j ai applé cette fonction avec la fonction callback

    g_signal_connect(G_OBJECT(rectangle), "button_press_event", G_CALLBACK(attrape_souris), fen);

    avec rectangle c est mon drawing area et fen c est Gtkwidget

    aprés j ai crée un sous menu iteme qui s appele modefacile
    et c est que voudrai faire que l image de pierre que s affiche sur le plateau ne marche pas que lorsque je clic sur le sous menu iteme "mode facile"

    merci de m avoir m aider

  2. #2
    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 : 54
    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
    Citation Envoyé par simplyc Voir le message
    ...
    et c est que voudrai faire que l image de pierre que s affiche sur le plateau ne marche pas que lorsque je clic sur le sous menu iteme "mode facile"

    merci de m avoir m aider
    Hum! Et en français tu veux faire quoi ?

    Sinon, si je traduis bien, tu veux que l'utilisateur ne puisse afficher des pierres que lorsque l'option "mode facile" n'est pas cochée?
    En partant de cette hypothèse il te suffit de contrôler l'état de l'item dans le CallBack attrape_souris();.

  3. #3
    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 : 54
    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
    Pour commencer lorsque tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_signal_connect(G_OBJECT(rectangle), "button-press-event", G_CALLBACK(attrape_souris), fen);
    tu transmets le pointeur fen au Callback. Tu récupères ensuite ce même pointeur dans la dernière variable de la fonction Callback. Ici se sera donc dans mode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void attrape_souris(GtkWidget *widget, GdkEventButton *event, gpointer mode);
    Histoire de parfaire la chose le prototype exact du CallBack est : gboolean user_function (GtkWidget *widget, GdkEventButton *event, gpointer user_data);.

    Ceci étant dit, revenons plus précisément à ton problème. Typiquement tu as du utiliser les GtkRadioMenuItem pour le choix dans le menu entre le mode "facile" et "difficile". Transmets ce pointeur au CallBack comme expliquer ci-dessus.
    Dans le CallBack tu le récupères donc et tu peux le tester pour connaitre son état grâce à la fonction gboolean gtk_check_menu_item_get_active (GtkCheckMenuItem *check_menu_item);. Ainsi si "facile" est coché tu peux autoriser l'affichage des pierres.

  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 : 54
    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
    Excuses-moi mais j'ai vraiment du mal à comprendre là où tu veux en venir.

    En règle général dans un menu on a
    • des entrées directes qui ouvrent d'autres fenêtres,
    • des options à cocher,
    • des options à choix multiples.

    De ce que j'ai compris tu as besoin soit des options à cocher, soit des options à choix multiples.
    Tu utilises des entrées directes pour faire un choix. Ce n'est pas très judicieux il me semble. Maintenant si tu veux faire comme ca attaches à chaque entrée du niveau de difficulté un CallBack dans lequel tu régleras une variable qui sera accessible aussi pour le CallBack attrape-souris();. Tu sauras alors quel niveau est choisi.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut
    est ce que je peux avoir votre @ éléctronique
    je suis sur que vous allez me comprendre de que vous voyez l exécution

    cordialement


    Citation Envoyé par gerald3d Voir le message
    Excuses-moi mais j'ai vraiment du mal à comprendre là où tu veux en venir.

    En règle général dans un menu on a
    • des entrées directes qui ouvrent d'autres fenêtres,
    • des options à cocher,
    • des options à choix multiples.

    De ce que j'ai compris tu as besoin soit des options à cocher, soit des options à choix multiples.
    Tu utilises des entrées directes pour faire un choix. Ce n'est pas très judicieux il me semble. Maintenant si tu veux faire comme ca attaches à chaque entrée du niveau de difficulté un CallBack dans lequel tu régleras une variable qui sera accessible aussi pour le CallBack attrape-souris();. Tu sauras alors quel niveau est choisi.

  6. #6
    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 : 54
    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
    Non ca ca va pas être possible. Il faut comprendre qu'on est vite submergé de code si on met le doigt la dedans .

    Par contre, si ton code est relativement court tu peux toujours en faire une archive et l'insérer dans ton post. J'y jetterai un œil volontiers.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut
    non il n est pas court de tous
    il contient 6 fichiers
    jesuis en impasse


    Citation Envoyé par gerald3d Voir le message
    Non ca ca va pas être possible. Il faut comprendre qu'on est vite submergé de code si on met le doigt la dedans .

    Par contre, si ton code est relativement court tu peux toujours en faire une archive et l'insérer dans ton post. J'y jetterai un œil volontiers.

  8. #8
    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 : 54
    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
    Fais une archive zippée de tous tes fichiers. Ensuite inséres-la dans ton post. Ca ne doit pas faire un fichier maousse costaud .

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut
    Citation Envoyé par simplyc Voir le message
    comment je peux metre les fichiers dans ma poste
    bhb

  10. #10
    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 : 54
    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
    Heuuu, il manque 2/3 fichiers dans ton archive :
    • main.c
    • fenetre.c
    • joueur.c
    • items.c
    • grille.c



  11. #11
    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 : 54
    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
    Premièr coup d'oeil à ton code, première remarque. Tu t'embêtes à réinventer la roue. La gestion des piles existent dans la GLib : GQueue.

    Maintenant ton code fonctionne à part l'affichage des pierres. Aucune pierre ne vient sur le damier après chaque clic. Est-ce là ton problème?

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut
    c est c est bon
    j ai resolu le probleme,franchement je suis con...
    merci beaucoup,je suis sur que je veux vous contacté encore
    ca me fais plaisir de savoir un expert comme vous
    Citation Envoyé par gerald3d Voir le message
    Premièr coup d'oeil à ton code, première remarque. Tu t'embêtes à réinventer la roue. La gestion des piles existent dans la GLib : GQueue.

    Maintenant ton code fonctionne à part l'affichage des pierres. Aucune pierre ne vient sur le damier après chaque clic. Est-ce là ton problème?

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/08/2013, 07h50
  2. Réponses: 5
    Dernier message: 11/05/2011, 09h27
  3. Réponses: 4
    Dernier message: 04/08/2010, 00h59
  4. Réponses: 4
    Dernier message: 27/11/2009, 17h08
  5. Réponses: 1
    Dernier message: 12/04/2007, 11h50

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