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

MFC Discussion :

Récupérer message dans OnChange [FAQ]


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut Récupérer message dans OnChange
    Bonjour à tous,

    Voila, j'ai un contrôle CEdit, auquel j'ai associé un spin control.
    Lors de l'interception du message OnEnChange, j'aimerai savoir si la modification provient d'un clic sur le spin, ou si c'est l'utilisateur qui a entré un chiffre au clavier. Est-ce possible dans la fonction OnEnChange() ?

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    non tu ne peux pas directement, mais tu peux faire ceci:
    intercepter le message UDN_DELTAPOS sur le spin ctrl.
    positionner un flag bSpin=true (initialisé préalablement a false bien sûr).
    ensuite OnChange sera appelé il suffira de tester le flag pour savoir si ça vient du spinctrl
    et de remettre la variable bSpin à false..

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    OK merci la technique marche bien !!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    heu ... désolé, cette technique marche bien, cependant, j'ai quelques problèmes à l'appliquer à votre classe CSpinBtnCtrl, en effet, si j'intercepte le message UDN_DELTAPOS dans ma classe principale, le programme n'entre jamais dedans.
    Apparemment, si j'enlève la surcharge de OnDeltapos dans la classe CSpinBtnCtrl, cela remarche.
    Y'a-t-il une solution pour que ça marche avec CSpinBtnCtrl ?

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    oui remplace ON_NOTIFY_REFLECT par ON_NOTIFY_REFLECT_EX dans ma classe , voir faq http://c.developpez.com/faq/vc/?page...MsgToParentWnd

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    désolé, mais il y a encore un hic !!

    apparemment, ON_NOTIFY_REFLECT_EX attend que ondeltaPos renvoie un BOOL, et non void...

    voila l'erreur : error C2440: 'static_cast' : impossible de convertir de 'void (__thiscall CSpinBtnCtrl::* )(NMHDR *,LRESULT *)' en 'BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)'

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    change le prototype mais BOOL a la place de void ,et renvoie TRUE.
    c'est visual 2005 qui a changé le prototype sous vc6 ça fonctionne..

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    C'est ce que j'ai essayé de faire, mais ça n'a pas marché (il n'entre toujours pas dans le message dans ma fenêtre principale).

    Je vais réessayer, car c'est vrai que c'est étonnant que ca n'ait pas marché.

    Merci en tout cas pour tes réponses !!

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Par défaut
    Bon OK, j'ai réessayé, en fait, il fallait renvoyer FALSE au lieu de TRUE !!

    Sinon, il y a juste un petit truc : il faut appuyer deux fois sur le spin control pour qu'il rentre dans le message (apparemment, la première fois, il rentre bien dans CSpinBtnCtrl::OnDeltaPos, mais pas dans OnEnChange). Mais bon, ca n'est pas très génant.

    Merci !!

  10. #10
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Farscape,

    Effectivement, il faut bien que la méthode renvoie un BOOL. Et comme le dit eddie5150, quand la valeur renvoyée est TRUE, le message n'est pas transmis à la fenêtre parent, alors que quand elle est FALSE, il l'est. C'est pratique, d'ailleurs, d'avoir cette possibilité, même si j'aurais intuitivement préféré l'inverse (TRUE pour transmettre au parent, FALSE pour bloquer).

    Je pense que ça vaudrait le coup de mettre à jour la FAQ, quand tu auras le temps, Farscape...

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    c'est noté, ça sera pour la prochaine release ,car j'ai déjà une maj de la faq en attente d'annonce....

  12. #12
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Je comprends.
    D'ailleurs, je me demande comment tu fais pour être aussi disponible sur le forum...
    Pour ce qui me concerne, rien ne presse puisque maintenant j'ai trouvé le truc. Mais je suis sûr que ça peut intéresser d'autres personnes que nous.

Discussions similaires

  1. Récupérer les messages dans une application cliente
    Par NetLandGim dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/08/2011, 14h19
  2. Récupérer un message dans n'importe quelle langue
    Par macumba dans le forum Grails
    Réponses: 0
    Dernier message: 02/08/2011, 22h46
  3. Comment récupérer les windows message dans un service
    Par coxman68 dans le forum Débuter
    Réponses: 0
    Dernier message: 26/02/2009, 12h20
  4. Récupérer message dans une boite de texte
    Par Nimothenicefish dans le forum Langage
    Réponses: 8
    Dernier message: 20/11/2008, 12h07
  5. Récupérer le nombre de message dans sa boite GMAIL
    Par VERTYODA dans le forum Web & réseau
    Réponses: 4
    Dernier message: 28/11/2005, 19h25

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