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 :

Faire disparaitre un TrackPopupMenu


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    37
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 37
    Par d�faut Faire disparaitre un TrackPopupMenu
    Bien le bonjour a tous,

    j'affiche une icone dans la TrayBar et lors d'un clic droit, j'affiche un PopupMenu avec la fonction TrackPopupMenu(..). J'utilise le code de la faq en modifiant la fonction OnTrayNotify. (lien vers la FAQ)

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    afx_msg LRESULT CCamSetupDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)
    {
        if ((UINT)wParam != 1)
            return 0 ;
        POINT pt;
     
         CMenu myMenu;
         int nCmd;
        switch (lParam)
        { 
        case WM_RBUTTONDOWN:
        case WM_CONTEXTMENU:
            GetCursorPos(&pt);
    	myMenu.CreatePopupMenu();
    	myMenu.InsertMenuA(0,MF_BYPOSITION|MF_STRING,1,_T("Exit"));
    	nCmd = myMenu.TrackPopupMenu(TPM_RETURNCMD|TPM_BOTTOMALIGN|TPM_LEFTBUTTON|TPM_RIGHTALIGN,
                pt.x, pt.y, this);
    	if (nCmd >0)
    	{
    		CString str;
    		myMenu.GetMenuStringA(nCmd, str, MF_BYCOMMAND);
    		if (str == _T("Exit"))
    		AfxGetMainWnd()->PostMessage(WM_SYSCOMMAND,SC_CLOSE,0);
    		}
    		break;
    	case WM_LBUTTONDOWN:
    	this->ShowWindow(SW_RESTORE);
    	break;
        } 
        return 0; 
    }
    Tout fonctionne bien, mais la ou je ne sais pas quoi faire, c'est que j'aimerais que le menu disparaisse si je clique a cot�. Or, il reste toujours affich� tant que je ne fais pas un clic dessus.
    J'utilise Visual2008. merci de votre aide.

    [edit]Si je clique dans la barre des taches sur un autre programme d�ja ouvert, celui-ci se met a clignoter (a la maniaire d'msn) au lieu d'afficher la fenetre. je dois encore cliquer 2 fois dessus pour afficher la fenetre. le premier clic la r�duit et le second la r�affiche. Si ca peut aider...

  2. #2
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    37
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 37
    Par d�faut
    msdn est mon amie, dsl

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    afx_msg LRESULT CCamSetupDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)
    {
        if ((UINT)wParam != 1)
            return 0 ;
        POINT pt;
     
            CMenu myMenu;
    		int nCmd;
        switch (lParam)
        { 
        case WM_RBUTTONDOWN:
        case WM_CONTEXTMENU:
     
    //ici
    		SetForegroundWindow();
     
     
     
            GetCursorPos(&pt);
          //  myMenu.LoadMenuA(IDR_MENU1);
    		myMenu.CreatePopupMenu();
    		myMenu.InsertMenuA(0,MF_BYPOSITION|MF_STRING,1,_T("Exit"));
    		nCmd = myMenu.TrackPopupMenu(TPM_RETURNCMD|TPM_BOTTOMALIGN|TPM_LEFTBUTTON|TPM_RIGHTALIGN,
                pt.x, pt.y, this);
     
     
    //et la
    		PostMessage(WM_NULL, 0, 0);
     
     
     
     
    		if (nCmd >0)
    		{
    			CString str;
    			myMenu.GetMenuStringA(nCmd, str, MF_BYCOMMAND);
    			if (str == _T("Exit"))
    				AfxGetMainWnd()->PostMessage(WM_SYSCOMMAND,SC_CLOSE,0);
    		}
    		break;
    	case WM_LBUTTONDBLCLK:
    		this->ShowWindow(SW_RESTORE);
    		break;
    	/*case WM_DISPLAYCHANGE:
    		myMenu.*/
        } 
        return 0; 
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. faire disparaitre le curseur de saisie et ...
    Par lacsap49 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 26/01/2006, 14h45
  2. [Tkinter] faire disparaitre un label ou autre solution
    Par thierry_b dans le forum Tkinter
    R�ponses: 3
    Dernier message: 06/01/2006, 17h22
  3. Faire disparaitre un bouton!
    Par manuaccess10 dans le forum IHM
    R�ponses: 11
    Dernier message: 02/12/2005, 07h28
  4. faire disparaitre du texte par rapport � radio bouton
    Par allowen dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 24/10/2005, 14h20
  5. R�ponses: 5
    Dernier message: 27/02/2004, 11h20

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