MFC tree control中点击树的节点时才弹出右键菜单
2个回答
展开全部
参考:MFC TreeCtrl树形控件中限定右键点击节点弹出菜单
void CGar3Dlg::OnRclickTreePhase(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
//动态加载菜单
CMenu menu[3];
menu[0].LoadMenu(IDR_MENU2);
menu[1].LoadMenu(IDR_MENU3);
menu[2].LoadMenu(IDR_MENU4);
CPoint pt;
//pt = GetCurrentMessage()->pt; //获取当前鼠标点击消息的坐标点
GetCursorPos(&pt);
m_maintree.ScreenToClient(&pt); //将鼠标的屏幕坐标,转换成树形控件的客户区坐标
UINT uFlags = 0;
HTREEITEM hItem = m_maintree.HitTest(pt, &uFlags); //然后做点击测试
if ((hItem != NULL) && (TVHT_ONITEM & uFlags)) //如果点击的位置是在节点位置上面
{
m_maintree.SelectItem(hItem);
//根据不同类型的节点弹出菜单
CMenu *psubmenu;
int nData = m_maintree.GetItemData(hItem);
m_maintree.ClientToScreen(&pt);
switch (nData)
{
case 0:
psubmenu=menu[0].GetSubMenu(0);
break;
case 1:
psubmenu=menu[1].GetSubMenu(0);
break;
case 2:
psubmenu=menu[2].GetSubMenu(0);
break;
default:
break;
}
psubmenu->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
}
*pResult = 0;
}
2013-06-01
展开全部
用MFC实现了对树控件的操作,可以新增,修改,删除树控件的父节点和子节点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询