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 :

[MFC] Cmenu : événement clic


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut [ Resolu ] [MFC] Cmenu : événement clic
    J'ai créer une classe CButtonMenu descendante de CMenu.
    Quelle m"éthode je dois surcharger pour capturer le clic de la souris sur tel ou tel élément de mon menu ??

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Hé hé je m'y attendais à celle-là : maintenant que tu as ta liste de boutons comment gérer les événements ? Non ?
    Pour gérer les pressions sur les boutons , à mon avis , il ne faut pas créer une nouvelle classe héritant de CMenu mais plutôt gérer les messages BN_CLICKED provenant des différents boutons dans la file de message et dans les méthodes WinProc ou PreTranslateMessage .
    La tu auras les données message ( BN_CLICKED ) , le WPARAM et LPARAM du message qui te donne l'ID ressource du bouton.
    Cet ID ressource peut-être exploité par GetCtrlID.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    en fait, ces boutons ne sont pas les éléments d'un menu.
    Lorsque je clic sur le bouton droit de la souris, j'ai un menu propre à chaque bouton qui apparait.
    je voudrais gérer l'evenement clic sur le menu, et non pas sur le bouton.

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Lorsque je clic sur le bouton droit de la souris, j'ai un menu propre à chaque bouton qui apparait.
    Lorsqu'on fait un clic droit avec la souris c'est en régle générale pour afficher un menu contextuel ou "PopUp menu".
    Voir l'aide sur les pop-up menus
    Un bouton c'est fait pour être pressé par la souris du bouton gauche.
    Faire gaffe à ce genre de détails car l'utilisateur va s'y perdre.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    Je concois tres bien, mais je me sers de ces boutons pour representer d objets auquels je peux attribuer d options via le clic droit. le clic gauche servant uniquement à la selection d'un objet. Cela me permet de gagner de la place sur l'ecran..
    En ce qui concerne la capture d'evenement clic, tu m'as parlé d'une fonction WinProc que j'ai mise en place, mais le probleme c ke l'evenement BN_CLICKED n'est pas capturé ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    LRESULT CECB2Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    	if (message == BN_CLICKED)
    		MessageBox("clic bouton", "test", MB_OK);
    	return CDialog::WindowProc(message, wParam, lParam);
    }
    j'ai fait une boulette ?
    ya t il un autre moyen ?

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Après investigations ( merci qui ?? ) il faut passer par WM_COMMAND puis traiter wParam qui contient le code du message BN_CLICKED ( si tel est le cas ) et lParam l'identifiant ressource du bouton :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    LRESULT CECB2Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
     
    { 
     if(message==WM_COMMAND)
      {
    if (::GetDlgCtrlID((HWND) lParam)==IDC_BUTTON1)
    MessageBox("clic bouton", "test", MB_OK); 
       }
       return CDialog::WindowProc(message, wParam, lParam); 
    }
    ça marche il fallut que je teste cela dans un de mes projets

  7. #7
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par défaut
    si le but c'est d'afficher un menu contextuel ( click droit ), tu as l'evenement OnContextMenu

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 121
    Par défaut
    bé ecoute, je vais te dire que ça fonctionne et que c exactement ce dont j'avais besoin.
    je te remercie pr tt, et c pas encore fini ...

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

Discussions similaires

  1. Rafraichissement de menu sur évènement clic.
    Par zesamoth dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 17/01/2008, 08h09
  2. [MFC] Quel évènement sur un Kill?
    Par Xno dans le forum MFC
    Réponses: 2
    Dernier message: 16/08/2006, 00h10
  3. [Visual Studio][MFC] Gestions évènements
    Par Mic75 dans le forum MFC
    Réponses: 6
    Dernier message: 07/06/2006, 20h03
  4. [MFC] Intercepter le clic sur Minimze Box
    Par March' dans le forum MFC
    Réponses: 2
    Dernier message: 09/07/2004, 16h15
  5. Réponses: 3
    Dernier message: 23/06/2004, 09h04

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