CtreeCtrl Popupmenu
-
i am able to show the popup menu when user right clicks on tree view item but now the problem is that when user clicks on some Menuitem then the control doesn't reaches to the respective menu handler in fact nothing is getting called below is the code for showing the pop uo menu void CTreeViewDlg::OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult) { CPoint ptMouse; DWORD dwPos; UINT nFlags; CTreeCtrl *pTreeCtrl; pTreeCtrl = (CTreeCtrl *)GetDlgItem(IDC_TREE1); { dwPos = ::GetMessagePos(); ptMouse.x = LOWORD (dwPos); ptMouse.y = HIWORD (dwPos); CPoint ptAction = ptMouse; // convert coordinates pTreeCtrl->ScreenToClient(&ptAction); // determine if click is on tree item HTREEITEM hItemRClick = pTreeCtrl->HitTest(ptAction, &nFlags); // if click is on tree item, if (hItemRClick != NULL) { // set selection to right+clicked item pTreeCtrl->SelectItem(hItemRClick); HMENU hMenu = LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu) { hMenu = GetSubMenu(hMenu,1); if(hMenu) { TrackPopupMenu(hMenu,0,ptMouse.x,ptMouse.y,0,pTreeCtrl->m_hWnd,NULL); } } } } *pResult = 0; } Thanks and regards harshal
-
i am able to show the popup menu when user right clicks on tree view item but now the problem is that when user clicks on some Menuitem then the control doesn't reaches to the respective menu handler in fact nothing is getting called below is the code for showing the pop uo menu void CTreeViewDlg::OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult) { CPoint ptMouse; DWORD dwPos; UINT nFlags; CTreeCtrl *pTreeCtrl; pTreeCtrl = (CTreeCtrl *)GetDlgItem(IDC_TREE1); { dwPos = ::GetMessagePos(); ptMouse.x = LOWORD (dwPos); ptMouse.y = HIWORD (dwPos); CPoint ptAction = ptMouse; // convert coordinates pTreeCtrl->ScreenToClient(&ptAction); // determine if click is on tree item HTREEITEM hItemRClick = pTreeCtrl->HitTest(ptAction, &nFlags); // if click is on tree item, if (hItemRClick != NULL) { // set selection to right+clicked item pTreeCtrl->SelectItem(hItemRClick); HMENU hMenu = LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu) { hMenu = GetSubMenu(hMenu,1); if(hMenu) { TrackPopupMenu(hMenu,0,ptMouse.x,ptMouse.y,0,pTreeCtrl->m_hWnd,NULL); } } } } *pResult = 0; } Thanks and regards harshal
-
i am able to show the popup menu when user right clicks on tree view item but now the problem is that when user clicks on some Menuitem then the control doesn't reaches to the respective menu handler in fact nothing is getting called below is the code for showing the pop uo menu void CTreeViewDlg::OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult) { CPoint ptMouse; DWORD dwPos; UINT nFlags; CTreeCtrl *pTreeCtrl; pTreeCtrl = (CTreeCtrl *)GetDlgItem(IDC_TREE1); { dwPos = ::GetMessagePos(); ptMouse.x = LOWORD (dwPos); ptMouse.y = HIWORD (dwPos); CPoint ptAction = ptMouse; // convert coordinates pTreeCtrl->ScreenToClient(&ptAction); // determine if click is on tree item HTREEITEM hItemRClick = pTreeCtrl->HitTest(ptAction, &nFlags); // if click is on tree item, if (hItemRClick != NULL) { // set selection to right+clicked item pTreeCtrl->SelectItem(hItemRClick); HMENU hMenu = LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU1)); if(hMenu) { hMenu = GetSubMenu(hMenu,1); if(hMenu) { TrackPopupMenu(hMenu,0,ptMouse.x,ptMouse.y,0,pTreeCtrl->m_hWnd,NULL); } } } } *pResult = 0; } Thanks and regards harshal