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] Tuer un menu ( bis )


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut [MFC] Tuer un menu ( bis )
    Bonjour je reviens ac mon problème de menus mais avec plus d'éléments....

    Au bout d'un certain laps de temps, mon appli doit tout fermer sauf son cadre principal. J'arrive à fermer toutes les boites de dialogues, messageBox et autre CMDIChildWnd, reste le problème des menus Popups.

    Un menu popup apparait suite à un clic droit sur une CView.
    Pour qu'il apparaisse, je fais donc ( dans le CView::OnRButtonDown () ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        // m_aMenu est une variable membre de ma classe CView
        m_aMenu.Load(IDR_MENU1);
        m_aMenu.TrackPopupMenu ..etc
        m_aMenu.Detach( )   // pr pouvoir enchainer les clics droits sans plantage
    Le timer de l'appli est paramétré dans la CMDIFrameWnd.

    Quand il arrive à échéance, il récupère le menu popup ouvert dans la CView par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        ((CMenusView*)MDIGetActive()->GetActiveView())->m_aMenu
    et je cherche à le fermer en faisant

    Detach( );
    ou
    DeleteMenu();
    ou
    DestroyMenu();


    Mais rien n'y fait....

    Comment dois-je m'y prendre pour fermer ce menu ?

  2. #2
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Est-ce que le créer/supprimer dynamiquement avec New/Delete pourrait régler le problème ?

  3. #3
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    il me semble déjà avoir repondu à cette question.

    a essayer :

    * envoies un WM_CANCELMODE à :: DefWindowProc() (peu importe la fenetre)

    ou

    * faire un ReleaseCapture()

    @+

  4. #4
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    C'est un ReleaseCapture sur le Menu ou sur la CView ?

    A part WM_CANCELMODE, il faut lui passer quoi comme paramètres à
    DefWindowProc ( ) ?

  5. #5
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    ReleaseCapture() ne prend pas de parametre

    En fait, un menu capture la souris pour la gestion. Si le menu perd la capture normalement il arrete sa boucle. J'ai pas de certitude si ça marche, c'est à essayer.

    ou sinon tu peux essayer : DefWindowProc(WM_CANCELMODE,0,0) sur la fenetre ou est attaché ton menu (le meme handle que pour TrackPopupMenu)

    pareil le WM_CANCELMODE arrete normalement les boucles de "tracking".

    @+

Discussions similaires

  1. [MFC] tuer un menu
    Par Denn's dans le forum MFC
    Réponses: 1
    Dernier message: 12/11/2007, 10h44
  2. [MFC] TreeView et menu contextuel...
    Par chronos dans le forum Windows
    Réponses: 3
    Dernier message: 11/01/2007, 09h18
  3. [MFC] Question sur Menu
    Par Cédric_07 dans le forum MFC
    Réponses: 2
    Dernier message: 12/05/2006, 14h46
  4. [MFC] Ajouter un menu dans un Dialogue
    Par poseidon2 dans le forum MFC
    Réponses: 3
    Dernier message: 26/01/2006, 17h57
  5. [MFC]Créer une DLL BIS
    Par Furtif_00 dans le forum MFC
    Réponses: 5
    Dernier message: 28/06/2004, 14h48

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