我自己在一个SDI文档中用menuPopup.LoadMenu(IDR_MYCONTEXT) 添加了一个菜单,没有问题。能正常运行。现在我想在这个后面再添加一个菜单项。我是这样做的
         CMenu menuPopup;
         menuPopup.LoadMenu(IDR_MYCONTEXT)
//=============这里以后就不会了======================================================
CMenu *menuAdd=new CMenu();
menuAdd->CreateMenu ();
menuAdd->AppendMenu(MF_SEPARATOR); 
menuAdd->AppendMenu (MF_STRING,ID_MENU_RED,"&Red"); HMENU hmenu =menuAdd->GetSafeHmenu();//得到动态菜单的HMENU
if(hmenu)
AfxMessageBox("ERROR");
menuPopup.Attach (hmenu);//将动态菜单添加到原来菜单的后面
menuPopup.Detach();
menuAdd->Detach ();
menuPopup.TrackPopupMenu (TPM_LEFTALIGN,point.x,point.y ,this);
刚学VC++不久。希望回答,谢谢=_= 这可能实现吗?生成的时候没有错误,一点右键就出错了。请问该怎么样才能实现?

解决方案 »

  1.   

    menuPopup.Attach (hmenu);//将动态菜单添加到原来菜单的后面这边有问题,这个attach不是添加到原来的后面在原有菜单后面添加菜单项,可以用
    CMenu::AppendMenu 
    去查查msdn,看看CMenu的那些成员函数
      

  2.   

    谢谢。按照你的方法,我发现了自己的一个错误=_= 最开始我也用了AppendMenu,应该是这样的menuPopup.GetSubMenu(0)->AppendMenu(MF_STRING,ID_MENU_RED,(LPCTSTR)"&Red");
    我用的时候直接就menuPopup.AppendMenu(MF_STRING,ID_MENU_RED,(LPCTSTR)"&Red");了。谢谢你!