CMenu 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
自己建个工程体会一下就知道了
在VC++6.0中,在project -》addtoproject-》……之后进行选择就可以为工程添加一个单击右键d出菜单功能,但是在VS中没有Pop-Up Menu组件,右键菜单需要手动添加。添加方法如下:1、在资源视图中添加所需的右键菜单
2、选择相应的类,单文档时选中View类在属性中添加WM_CONTEXTMENU消息
3、在OnContextMenu添加如下代码
void CMenu3View::OnContextMenu(CWnd* , CPoint point)
{
// TODO: 在此处添加消息处理程序代码
if (point.x == -1 && point.y == -1)
{
CRect rect
GetClientRect(rect)
ClientToScreen(rect)
point = rect.TopLeft()
point.Offset(5, 5)
}
CMenu menu
VERIFY(menu.LoadMenu(CG_IDR_POPUP_TYPING_TEST_VIEW)) //CG_IDR_POPUP_TYPING_TEST_VIEW为菜单ID
CMenu* pPopup = menu.GetSubMenu(0)
ASSERT(pPopup != NULL)
CWnd* pWndPopupOwner = this
while (pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent()
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,pWndPopupOwner)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)