2. 我在资源里定义了一个菜单ID为:IDR_MENU1,然后在视图的OnRButtonDown()里,设置一个右键菜单,这样会出错:
ClientToScreen(&point);
CMenu menu;
if(menu.CreatePopupMenu())
{
menu.LoadMenu(IDR_MENU1);
menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
而这样就不会:
ClientToScreen(&point);
CMenu menu;
if(menu.CreatePopupMenu())
{
menu.AppendMenu(MF_STRING,111,"A");
menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
右键菜单不可以LoadMenu吗?应该不会吧,那问题出在哪里呢?

解决方案 »

  1.   

    ClientToScreen(&point); 
    CMenu   menu, *pmenu = NULL; { 
       menu.LoadMenu(IDR_MENU1); 
       pmenu = menu.GetSubMenu(0);
       if(pmenu)
         pmenu->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this); 
      

  2.   

    CMenu oMenu;
                    if (oMenu.LoadMenu(IDR_MENU1))        
                    {
                        CMenu* pPopup = oMenu.GetSubMenu(0);
                        ASSERT(pPopup != NULL);
                        CPoint oPoint;
                         GetCursorPos( &oPoint );
                        SetForegroundWindow();
                       pPopup->TrackPopupMenu(
                            TPM_LEFTALIGN | TPM_RIGHTBUTTON,
                            oPoint.x, oPoint.y, this); 
                    }
                }
                break;
      

  3.   

    LoadMenu
    CreatePopupMenu
    是不同创建菜单句柄的方法,
    你已通过CreatePopupMenu创建了菜单,此时是空菜单,只能通过AppendMenu,InertMent来增加菜单项
      

  4.   

    1楼是对的,是我的菜单没设置成 popup...