新建一个菜单资源IDR_MENU1,然后为View类添加OnContextMenu类添加消息,添加如下代码:
void CRMenuView::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
CMenu m_popMenu
m_popMenu.LoadMenu(IDR_MENU1)
CMenu* pSubMenu=m_popMenu.GetSubMenu(0)
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this)
}
思路是这样的,先在资源面板里添加一个menu资源,编辑成自己想要的,完成以后在需要右键单击触发的地方添加右键单击事件,代码里写入d出这个menuCMenu m,*pm
if(!m.LoadMenu(IDR_MENU1)) MessageBox(_T("err"))//IDR_MENU1是相应的资源id
pm=m.GetSubMenu(0)//获取子对话框
CPoint pot
GetCursorPos(&pot)//获取鼠标当前位置
pm->TrackPopupMenu(TPM_LEFTALIGN,pot.x,pot.y,this)//在鼠标位置d出菜单
注意,上面的pm是获取的是第一个主menu项下的子menu,比如设计menu资源的时候主menu从左到右是1,2,3,其中1下面又添加了4,5,6
那么这个程序d出的menu就是4,5,6
自己建个工程体会一下就知道了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)