学习了一下右键弹出式菜单。
一般的,实现右键菜单有如下步骤和注意事项。
1 在资源里新建菜单并画菜单,可以画多个子菜单。
2 映射 WM_CONTEXTMENU 消息到视图或者需要的地方。
3 编如下码
void CW14aView::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_MENURIGHT);
menu.GetSubMenu(1)->TrackPopupMenu(TPM_RIGHTBUTTON ,point.x,point.y,this);
}
这不是唯一的方式。
以下是MSDN例子程序,也可实现。
void CMyView::OnRButtonDown(UINT nFlags, CPoint point)
{
CView::OnRButtonDown(nFlags, point);
CMenu* menu_bar = AfxGetMainWnd()->GetMenu();
CMenu* file_menu = menu_bar->GetSubMenu(0);
ASSERT(file_menu);
file_menu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, point.y, this);
}