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 :

Vc++ evenement Wm_lbuttonup


Sujet :

MFC

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 15
    Par défaut Vc++ evenement Wm_lbuttonup
    Bonjour,

    J'ai une class CSkinDialog qui herite d'un CDialog.
    Je recupere bien tout les messages liés au bouton de la souris WM_RBUTTONUP WM_RBUTTONDOWN WM_LBUTTONDOWN mais pas le WM_LBUTTONUP.
    Je recupere ce message WM_LBUTTONUP uniquement lorsque je double click. D'ailleurs je ne recupere pas le WM_LBUTTONDBLCLK non plus lors d'un double click.
    Est ce que cela cause a quelqu'un ce genre de probleme ?

    Merci.

  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
    hum bizarre, tu as regardé si il n'y a pas un traitement particulier sur ces messages dans ta classe parent ?

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 15
    Par défaut
    J'ai verifié, j'ai aucun traitement.
    J'ai regardé aussi au niveau des PreTranslateMessage(...) de ma class parent et je ne recois pas non plus les WM_LBUTTONUP.
    Quel est le mecanisme qui pourrait les filtrer ? J'ai cherché sur le net un truc dans ce gout là mais j'ai rien trouvé.
    Voila, si quelqu'un aurait une idée, elle serait la bien venu.

  4. #4
    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
    ces messages sont bien present dans le beginmessagemap ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 15
    Par défaut
    Oui

    BEGIN_MESSAGE_MAP(CSkinDialog, CDialog)
    //{{AFX_MSG_MAP(CSkinDialog)
    ON_WM_PAINT()
    ON_WM_LBUTTONDOWN()
    ON_WM_RBUTTONDOWN()
    ON_WM_LBUTTONUP()
    ON_WM_MOUSEMOVE()
    ON_WM_ERASEBKGND()
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

  6. #6
    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
    un detail :
    quand tu testes ces clics souris ,tu le fais sur la surface de la dialogue et pas sur un contrôle de la dialogue ?


  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    c'est normal que RBUTTONUP n'y soit pas?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 15
    Par défaut
    Médinoc :
    Oui c'est normal. Je l'avais supprimé pour des test. Mais si je le rajoute. Pas de probleme il fonctionne.

    Je fais bien le clic sur la fenetre et pas sur un controle.
    Si j'utilise le Spy de visual, Je vois bien l'evenement Bouton Gauche up dans la liste des messages. Mais il ne parvient pas a ma fenetre. Vraiment bizarre.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 15
    Par défaut
    J'ai trouvé
    C'etait bien sur stupide :

    Dans la fonction
    void CSkinDialog::OnLButtonDown(UINT nFlags, CPoint point)
    J'avais rajouté ca :
    PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y));
    Ca indique au system que l'utilisateur a cliquer sur la barre bleu et le deplacement de la fenetre et alors automatique tant qu'il laisse la touche down appuyé. C'est peut etre pas super elegant mais je connais pas autre chose. (ne pas oublié que c'est pour gerer des Skins, donc pas de barre bleu)
    Le probleme dans ce cas, ce qu'il semble ne plus me renvoyer le LBUTTONUP.
    J'ai donc modifié mon code comme suit :
    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
     
    void CSkinDialog::OnLButtonDown(UINT nFlags, CPoint point)
    {
    bFlagLButtonDown=true;
    ...
    }
     
    void CSkinDialog::OnLButtonUp(UINT nFlags, CPoint point)
    {
    bFlagLButtonDown=false;
    ...
    }
     
    void CSkinDialog::OnMouseMove(UINT nFlags, CPoint point) 
    {
     // TODO: Add your message handler code here and/or call default
    if(bFlagLButtonDown==true)
    {
    PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y));
    bFlagLButtonDown = false;
    }
    ....
    }
    et ca marche.
    Cependant si quelqu'un a une meilleur solution , je suis preneur.

    Merci pour votre aide.
    Pense à mettre la balise code ,Merci Farscape

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    J'ai déjà joué avec WM_NCHITTEST et WM_NCCALCRECT pour avoir des contrôles skinnés. Avec ça, je déterminais moi-même quelle partie est la barre de titre et quelle partie est la zone client.
    Par contre, tu devras aussi traiter le message WM_NCPAINT pour dessiner ta barre de titre perso.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 15
    Par défaut
    merci pour l'info.

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

Discussions similaires

  1. [VB6] Interception des évènement Copier/Couper/Coller
    Par youtch dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/10/2002, 17h09
  2. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46
  3. Evenement Change
    Par PierDIDI dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2002, 10h08
  4. develloppement avec ORBit: service d'evenement
    Par belmontv dans le forum CORBA
    Réponses: 3
    Dernier message: 06/06/2002, 22h56
  5. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21

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