MFC 如何在工具栏空白处弹出右击菜单

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:22:56
在MFC中如何实现 点击工具栏空白处弹出右击菜单。
谢谢大家的回答。在窗口右击的已经实现了,我希望在工具栏右击弹出的和窗口工作区弹出的不是一个,该怎么实现呢?初学者有点摸不着头脑,希望高手指点。

1, Project->Add to Project->Components and Controls添加pop menu即可。
2, 静态添加菜单方法。
1) 在资源里编辑一个菜单
2) View中添加WM_RBUTTONDOWN消息对应函数。
3) 在OnRButtonDown中添加如下
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup=menu.GetSubMenu(0);
ClientToScreen(&point);
//因为point的位置是从屏幕的左上角为起点开始计算的,要想让菜单在正确的位置显示就要使用这个ClientToScreen函数将屏幕菜单转化成为正确的view坐标。
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,GetParent());//不想在框架类显示就把GetParent()改为this。
//trackpopupmenu是用来显示右击菜单的。

首先插入一个菜单资源,并添加命令响应
添加右键响应消息,响应函数里添加代码
CMenu menu;
menu.LoadMenu(菜单资源ID)
menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON |
TPM_RIGHTBUTTON, point.x, point.y, this);