MFC TreeCtrl树形控件中限定右键点击节点弹出菜单
2018-03-28 00:52
447 查看
一、创建3个菜单,ID分别为IDR_MENU2,IDR_MENU3,IDR_MENU4,这些菜单必须要有子菜单项。
二、在树形控件右键-》属性-》事件-》添加右键点击处理。
三、在消息处理函数中添加代码
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;
}
二、在树形控件右键-》属性-》事件-》添加右键点击处理。
三、在消息处理函数中添加代码
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;
}
相关文章推荐
- MFC之右键点击listctrl控件弹出菜单
- 给树形控件添加右键弹出菜单的代码(会陆续增加了其他的内容)
- 在WPF里面获取右键弹出菜单(ContextMenu)的鼠标点击源(Owner)控件
- C# TreeView树控件,失去焦点仍然高亮显示,右击节点时才弹出右键菜单,空白处右击不弹出菜单
- C# TreeView树控件,失去焦点仍然高亮显示,右击节点时才弹出右键菜单,空白处右击不弹出菜单
- 在WPF里面获取右键弹出菜单(ContextMenu)的鼠标点击源(Owner)控件
- C#TreeView窗体版点击右键弹出菜单+直接修改名称+新建节点
- MFC创建右键弹出菜单,运行点击右键后出现系统崩溃
- CMFCToolBar::ReplaceButton() 替换CMFCToolBarMenuButton控件 点击按钮弹出菜单问题
- CTree Ctrl控件右键选中某一项,并弹出菜单的一段代码!
- MFC: 右键弹出菜单-->选取菜单弹出窗口
- 在DevExpress的treelist控件节点上实现右键弹出菜单项
- MFC学习笔记.day03-菜单,图形标记菜单创建,菜单栏禁用,命令响应,右键弹出菜单,添加菜单
- MFC为应用程序添加托盘(右键托盘,弹出菜单)
- MFC创建右键弹出菜单的方法
- MFC---鼠标右键弹出菜单
- JTable中点击鼠标右键弹出菜单
- 给JList中的Item添加右键点击弹出菜单事件
- 桌面点击右键,菜单向左弹出,如何改为向右弹出菜单
- 一个简单的PopupWindow做的选项菜单点击按钮会在按钮下弹出几个下拉控件