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