void Fun(){
CMenu menu;
if(!menu.LoadMenu(IDR_MENUDS)) //载入菜单资源
  return;
if(condition){
//!!!!@@@@@禁用ID_MENUDEL菜单项@@@@@@
menu.GetSubMenu(0)->EnableMenuItem(ID_MENUDEL, MF_DISABLED|MF_GRAYED);
}
pPopMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x,point.y,this);
}
@@@@部分运行无效,显示的菜单仍然是可用的,不知如何禁用指定项,
高手指点!

解决方案 »

  1.   

    CMenu menu, *popup;
    // 装入菜单
    menu.LoadMenu(IDR_MENUDS); 
    popup=menu.GetSubMenu(0);
    popup->EnableMenuItem (ID_MENUDEL, (condition ? MF_GRAYED : MF_ENABLED)); // 显示菜单 
    popup->TrackPopupMenu (TPM_LEFTALIGN|TPM_LEFTBUTTON,  
    point.x, point.y, this);
      

  2.   

    void CXXXXXDlg::OnInitMenuPopup( CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu )
    {
    if (bIsStart)
    {
    pPopupMenu->EnableMenuItem(IDOK,MF_GRAYED);
    pPopupMenu->EnableMenuItem(IDC_STOP,MF_ENABLED);
    pPopupMenu->EnableMenuItem(ID_REPORT,MF_ENABLED);
    pPopupMenu->EnableMenuItem(ID_CHAT,MF_ENABLED);
    pPopupMenu->EnableMenuItem(ID_SHOWLIST,MF_ENABLED);
    }
    else
    {
    pPopupMenu->EnableMenuItem(IDOK,MF_ENABLED);
    pPopupMenu->EnableMenuItem(IDC_STOP,MF_GRAYED);
    pPopupMenu->EnableMenuItem(ID_REPORT,MF_GRAYED);
    pPopupMenu->EnableMenuItem(ID_CHAT,MF_GRAYED);
    pPopupMenu->EnableMenuItem(ID_SHOWLIST,MF_GRAYED);
    }
    }
      

  3.   

    忘了说一个信息了,就是我为ID_MENUDEL加了commond消息处理函数了