void CMenuView::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu Menu;
Menu.LoadMenu(IDR_MENU1);
CMenu *pPopup = Menu.GetSubMenu(0);
ClientToScreen(&point); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);
CView::OnRButtonDown(nFlags,point);
}当我改为void CMenuView::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu Menu;
Menu.LoadMenu(IDR_MENU1);
Menu.GetSubMenu(0);
ClientToScreen(&point); Menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);
CView::OnRButtonDown(nFlags,point);
}或者void CMenuView::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu *Menu;
Menu->LoadMenu(IDR_MENU1);
Menu->GetSubMenu(0);
ClientToScreen(&point); Menu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);
CView::OnRButtonDown(nFlags,point);
}都不行的??
为什么我只是不想要多一个pPopup参数而已

解决方案 »

  1.   

    Menu.GetSubMenu(0);    
    这是把第一个菜单子项取出来并弹出显示,你这么做倒是取出来了,但没赋给一个变量,所以就相当于没取出来
      

  2.   

    不要想当然,既然有pPopup 就有pPopup 存在的道理。要明白为什么就要弄清每一句的含义。Menu是一个对象,他通过LoadMenu(IDR_MENU1)来加载整个菜单,Menu.GetSubMenu(0);是获得 整个菜单的某个子菜单,并返回子菜单句柄。 这个时候 Menu并没有变, 你让他TrackPopupMenu有什么用,TrackPopupMenu应该是那个子菜单,也就是返回值!
      

  3.   

    其实我就是想弄清每一句的含义。。
    那是不是Menu就是那个我想要的菜单,
    pPopup的目的就是利用TrackPopupMenu它来显示我想要的菜单??