为窗口增加上下文菜单
思路:
1.在资源里新建菜单
2.在类CMSPMSApp里载入
3.在菜单的父窗口里添加消息:WM_CONTEXTMENU的响应函数.
代码:
载入:
void CMSPMSApp::PreLoadState ()
{
GetContextMenuManager()->AddMenu (_T("My menu"), IDR_CONTEXT_MENU);
// TODO: add another context menus here
GetContextMenuManager()->AddMenu (_T("video channel"), IDR_CONTEXT_CHANNEL);
GetContextMenuManager()->AddMenu (_T("设备管理"), IDR_CONTEXT_DEVICE);
}
添加响应函数:
void CDeviceBrowser::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: 在此处添加消息处理程序代码
CTreeCtrl* pWndTree = (CTreeCtrl*) &m_wndTree;
ASSERT_VALID (pWndTree);
if (pWnd != pWndTree)
{
CBCGPDockingControlBar::OnContextMenu(pWnd, point);
return;
}
if (point != CPoint (-1, -1))
{
CPoint ptTree = point;
pWndTree->ScreenToClient (&ptTree);
HTREEITEM hTreeItem = pWndTree->HitTest (ptTree);
if (hTreeItem != NULL)
{
pWndTree->SelectItem (hTreeItem);
pWndTree->SetFocus ();
theApp.GetContextMenuManager()->ShowPopupMenu (IDR_CONTEXT_DEVICE,point.x, point.y, this, TRUE);
}
else
{
CBCGPDockingControlBar::OnContextMenu(pWnd, point);
}
}
}
浙公网安备 33010602011771号