如何创建右键弹出菜单(即ContextMenu)
2010-05-08 21:32
423 查看
在Visual studio 2005环境中,在“资源视图”新建一个“Menu”资源ID为IDR_CONTEXTMENU,然后编辑你的菜单资源,假如设计的菜单栏结构如下:
menuItem1 menuItem2 menuItem3
--subItem1A --subItem2A --subItem3A
--subItem1B --subItem2B --subItem3B
我需要获取menuItem2的PopupMenu(即子菜单)作为ContextMenu,则应该怎么做呢?
接下来本人讲述两种创建右键弹出菜单的方法:
一、创建一个“鼠标右键按下”的系统消息WM_RBUTTONDOWN,在其消息处理函数中添加如下代码:
在存在“系统菜单栏”的对话框应用程序中,建议用这一个方法,因为此时你可以在对话框Client区右键则弹出自定义的ContextMenu
如此例弹出:|subItem2A|
|subItem2B|
而在标题栏处右键则会弹出“系统菜单栏”。
二、创建一个"ContextMenu"的系统消息“WM_CONTEXTMENU”,在其消息处理函数中添加如下代码:
此方法则会屏蔽掉自带的标题栏上右键触发的“系统菜单栏”,即在标题栏上右键弹出的菜单栏也是自定义的ContextMenu即弹出:|subItem2A|
|subItem2B|
menuItem1 menuItem2 menuItem3
--subItem1A --subItem2A --subItem3A
--subItem1B --subItem2B --subItem3B
我需要获取menuItem2的PopupMenu(即子菜单)作为ContextMenu,则应该怎么做呢?
接下来本人讲述两种创建右键弹出菜单的方法:
一、创建一个“鼠标右键按下”的系统消息WM_RBUTTONDOWN,在其消息处理函数中添加如下代码:
void CMyDlg::OnRButtonDown(UINT nFlags, CPoint point) { CMenu *pContextMenu,* pSubMenu; CRect rect; this->GetWindowRect(&rect); pContextMenu=new CMenu();//一定要动态申请空间,不然就会在LoadMenu时出现错误 pContextMenu->LoadMenu(IDR_CONTEXTMENU); pSubMenu=pContextMenu->GetSubMenu(1); pSubMenu->TrackPopupMenu(TPM_RIGHTBUTTON|TPM_LEFTALIGN,point.x+rect.left,point.y+rect.top,this); }
在存在“系统菜单栏”的对话框应用程序中,建议用这一个方法,因为此时你可以在对话框Client区右键则弹出自定义的ContextMenu
如此例弹出:|subItem2A|
|subItem2B|
而在标题栏处右键则会弹出“系统菜单栏”。
二、创建一个"ContextMenu"的系统消息“WM_CONTEXTMENU”,在其消息处理函数中添加如下代码:
void CMyDlg::OnContextMenu(CWnd *pWnd, CPoint point) { CMenu *pContextMenu,* pSubMenu; pContextMenu=new CMenu();//一定要动态申请空间,不然就会在LoadMenu时出现错误 pContextMenu->LoadMenu(IDR_CONTEXTMENU); pSubMenu=pContextMenu->GetSubMenu(1); pSubMenu->TrackPopupMenu(TPM_RIGHTBUTTON|TPM_LEFTALIGN,point.x,point.y,this); }
此方法则会屏蔽掉自带的标题栏上右键触发的“系统菜单栏”,即在标题栏上右键弹出的菜单栏也是自定义的ContextMenu即弹出:|subItem2A|
|subItem2B|
相关文章推荐
- 如何自定义创建windows的右键弹出菜单(C++)
- WPF 如何控制右键菜单ContextMenu的弹出
- MFC右键弹出菜单的创建
- Qt5:创建右键弹出菜单
- 如何在TabControl中响应右键鼠标(添加一个ContextMenu就可以了),如何让在tab标签处右键菜单和在内容处右键菜单显示不同的菜单?
- 整理文档,搜刮出一个vue2.0的contextmenu右键弹出菜单的实例代码
- 如何修改鼠标右键的弹出菜单项
- vc++ 如何添加右键弹出菜单
- 在WPF里面获取右键弹出菜单(ContextMenu)的鼠标点击源(Owner)控件
- 创建easyui的右键菜单(onRowContextMenu)
- MFC创建右键弹出菜单的方法
- 在WPF里面获取右键弹出菜单(ContextMenu)的鼠标点击源(Owner)控件
- 如何在list控件中响应右键弹出菜单中的菜单事件
- 孙鑫VC++深入详解:Lesson6 Part3 ---创建右键弹出菜单 TrackPopupMenu
- 搞清了两个问题: 查询TCP端口状态 以及 如何弹出右键菜单
- 创建右键菜单;加载菜单资源; WM_CONTEXTMENU;PtInRect(判断点是否在矩形内);ScreenToClient;DefWindowProc
- 如何在 QWidget 窗口上弹出右键菜单
- 【转】 教你如何创建类似QQ的android弹出菜单
- Swing创建带图标的右键弹出菜单
- handsontable如何重写右键菜单(contextmenu)