Popup Menü...rausfinden auf welches Item geklickt wurde



  • Hallo,
    das PopupMenü habe ich nicht mit dem Ressourceneditor erstellt sondern per Hand...
    wie find ich raus welches Item ich dann gewählt habe??
    selber IDs festlegen für die Items? wie geht das?
    und dann mit OnCommand arbeiten?

    cu

    // Popup Menü initialisieren
    BOOL CClient_GUIDlg::OnInitDialog()
    {
    m_Popup.CreatePopupMenu();
    
    m_Popup.InsertMenu(1, MF_BYPOSITION | MF_STRING, ID_APP_ABOUT, "Send Message");
    m_Popup.InsertMenu(2, MF_BYPOSITION | MF_STRING, ID_APP_ABOUT, "Send File");
    m_Popup.InsertMenu(3, MF_BYPOSITION | MF_STRING, ID_APP_ABOUT, "Play Game");
    m_Popup.InsertMenu(4, MF_BYPOSITION | MF_STRING, ID_APP_ABOUT, "History");
    
    usw.
    }
    
    // wird auf ein Item der List Control geklickt mit rechter Maustaste, dann 
    // erscheint das Popup Menü
    void CClient_GUIDlg::OnNMRclickList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    // TODO: Add your control notification handler code here
    *pResult = 0;
    
    LVHITTESTINFO lvhti; 
    
    CPoint point; 
    GetCursorPos(&point);      
    
    m_ListCtrl.ScreenToClient(&point);  // ScreenToClient rechnet von Screen auf Client Koordinaten um
    lvhti.pt = point; 
    int iItemHit = m_ListCtrl.SubItemHitTest(&lvhti);  // SubItemHitTest prüft, welches Item an einem bestimmten Punkt ist
    
    if(iItemHit != -1) 
    {           
       m_ListCtrl.ClientToScreen(&point); 
       m_Popup.TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); 
    }
    }
    


  • Hi,

    wenn Du bei TrackPopUpMnu das Flag TPM_RETURNCMD angibst, liefert die Funktion
    als Rückgabe die ID des ausgewählten Kommandos.
    Die Kommando ID's hast du bei InsertMenu vergeben (1, 2, 3 usw.)

    Gruss
    EB



  • leider bekomm ich immer die gleiche id zurück;-(

    cu + danke

    unsigned int id = m_Popup.TrackPopupMenu(TPM_LEFTALIGN | TPM_RETURNCMD, point.x, point.y, this); 
    stringstream str;
    str << id;
    AfxMessageBox(str.str().c_str());
    


  • außerdem hat die funktion als rückgabewert BOOL!!

    BOOL TrackPopupMenu(...)
    

    cu


Anmelden zum Antworten