000
01.10.2006, 17:01 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Hi, also ich hab in nem Dialog ein CTreeCtrl - nun ja - momentan mach ich das so:
C++: |
void CViewerDlg::OnNMRclickTree(NMHDR *pNMHDR, LRESULT *pResult) { *pResult = 0;
CMenu Menu; if(Menu.LoadMenu(IDR_TREECTRL_CONTEXTMENU)) { HTREEITEM hItem = m_Tree.GetDropHilightItem(); if(hItem) m_Tree.SelectItem(hItem);
if(hItem) { POINT pt; GetCursorPos(&pt); CMenu* pPopup = NULL; CString Text = m_Tree.GetItemText(hItem);
if(m_Tree.GetParentItem(hItem) == NULL) pPopup = Menu.GetSubMenu(0); // "Menu Parent" else pPopup = Menu.GetSubMenu(1); // "Menu SubItem"
pPopup->InsertMenu(0, MF_BYPOSITION, 0, Text); pPopup->InsertMenu(1, MF_BYPOSITION|MF_SEPARATOR, 0);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pt.x, pt.y, this); } } }
|
Problem ist nun: Wenn das TreeItem eben einen parent hat (also ein subitem ist) wird merkwürdigerweise kein ContextMenu gezeigt. GetSubMenu(1) liefert zwar "irgendwas" nur ka wohl nicht das 2te Menüfeld aus dem Menü. Wieso ist das so?!? -- class God : public ChuckNorris { }; |