15,980
社区成员
发帖
与我相关
我的任务
分享
NM_RCLICK
void CXXXDlg::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CPoint point;
GetCursorPos(&point);
CPoint pt(point);
m_tree.ScreenToClient(&point);
HTREEITEM hItem = m_tree.HitTest(point);
if(hItem)
{
m_tree.SelectItem(hItem);
if(!m_tree.ItemHasChildren(hItem))//如果没有子项则弹出菜单
{
CMenu m;
m.LoadMenu(IDR_MENU3);
m.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,pt.x,pt.y,this);
m.DestroyMenu();
}
}
*pResult = 0;
}
UINT uFlags;
CPoint point;
::GetCursorPos(&point);
HTREEITEM t=m_tree.GetSelectedItem();//获得选中的项
HTREEITEM hItem = m_tree.HitTest(point, &uFlags);
if ((hItem != NULL) && (TVHT_ONITEM & uFlags))
{
m_tree.Select(hItem, TVGN_CARET);
}
// CString s1=m_tree.GetItemText(hItem);
// CString s2=m_tree.GetItemText(t);
// CString s=s1+":"+s2;
// MessageBox(s);//经测试,s1永远是空的,而s2则能正确获得选择项的文本
if(!m_tree.ItemHasChildren(hItem))//如果没有子项则弹出菜单
{
CMenu m;
m.LoadMenu(IDR_MENU3);
m.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,this);
}