工控编程吧

标题: 上位机MFC如何实现快捷菜单 [打印本页]

作者: qq263946146    时间: 2019-7-19 12:19
标题: 上位机MFC如何实现快捷菜单
所谓的快捷菜单,就是直接鼠标右键弹出的菜单,可以很方便的通过菜单操作软件。
有普通菜单的添加一样,
首先也是新增一个菜单资源IDR_MENU。菜单上有众多子菜单。
如果是想通过鼠标右键弹出菜单,可以要鼠标右键函数内实现。
void CDemoView::OnRButtonUp(UINT nFlags, CPoint point)
{
        ClientToScreen(&point);
        CMenu menu;
        //加载菜单
        if (!menu.LoadMenu(IDR_MENU))
        {
                return;
        }
        //获得子菜单
        CMenu* pPopupMenu = menu.GetSubMenu(0);
        //弹出菜单
        pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
                point.x, point.y, this);
        CView::OnRButtonUp(nFlags, point);
}

也可以响应消息WM_CONTEXTMENU的处理函数实现
void CDemoView::OnContextMenu(CWnd* pWnd, CPoint point)
{
        CMenu menu;
        //加载菜单
        if (!menu.LoadMenu(IDR_MENU))
        {
                return;
        }
        //获得子菜单
        CMenu* pPopupMenu = menu.GetSubMenu(0);
        //弹出菜单
        pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
                point.x, point.y, pWnd);  
}

子菜单项的点击响应函数,可以与正常菜单项关联消息一样操作
void CDemoView::OnTestMenu1()
{
        AfxMessageBox(_T("快捷菜单项1命令"));
}

void CDemoView::OnTestMenu2()
{
        AfxMessageBox(_T("快捷菜单项2命令"));
}

[MFC408]1[/MFC408]





欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4