不包含子菜单,其实我想做出Windows中右键弹出菜单那样的效果。

解决方案 »

  1.   

    响应OnContextMenu事件,
    看看传进来的参数你就知道在什么地方创建了。
    然后
    Cmenu Menu;
    Menu.Load...
    menu.Track....
      

  2.   

    OnRButtonDown()
    //加载"选择"右键菜单
    CMenu menu;
    menu.LoadMenu(IDR_MENU1);//IDR_MENU1菜单ID CMenu* pPopupMenu=menu.GetSubMenu(0);
    CPoint pt;
    GetCursorPos(&pt);
    pPopupMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this);
    //菜单弹出后销毁对象
    menu.DestroyMenu();
    pPopupMenu->DestroyMenu();
    pPopupMenu=NULL;
      

  3.   

    先插入一菜单资源,如IDR_MENU1,在该菜单下有你想要的子菜单。然后添加CMainFrame类的消息WM_CONTEXTMENU,具体实现是:
    void CMainFrame::OnContextMenu(CWnd*pWnd,CPoint point)
    {
    CMenu menu;
    menu.LoadMenu(IDR_MENU1);
    CMenu*popup = menu.GetSubMenu(0);
    popup->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);