?

解决方案 »

  1.   

    BOOL EnableMenuItem(
      HMENU hMenu,         // handle to menu
      UINT uIDEnableItem,  // menu item to enable, disable, or gray
      UINT uEnable         // menu item flags
    );
      

  2.   

    uIDEnableItem 如何指定啊? 
    我不别的程序菜单的ID啊?
      

  3.   

    spy++能得到菜单的ID吗?
    我只能找到窗口及其控件的
    请指教
      

  4.   

    用EXESCOPE可以查看资源里menu id,尝试用WM_COMMAND给目标发消息
      

  5.   

    HMENU hmenu;
    hmenu=::GetMenu(hOutLook);
    CString strTmp;
    CMenu* pMenu = CMenu::FromHandle(hmenu);//GetSafeHwnd(hOutLook)->GetMenu();//(hOutLook);//->GetMenu();
    CMenu * pChildMenu;
    if (pMenu != NULL && pMenu->GetMenuItemCount() > 0)
    {
      pChildMenu=pMenu->GetSubMenu(0);
      //i=pChildMenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_DISABLED );
      //得到菜单文本
      pChildMenu->GetMenuString(0,strTmp,MF_BYPOSITION);
      //发送消息,触发菜单
      ::PostMessage(hOutLook,WM_COMMAND,pChildMenu->GetMenuItemID(0),0);
      //???下面的语句不能将第一个菜单项的第一个子菜单项无效? 为什么?
      pChildMenu->EnableMenuItem(0,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
      //下面的语句能使主菜单的第一个菜单项无效
      pMenu->EnableMenuItem(0,MF_BYPOSITION | MF_DISABLED| MF_GRAYED);
    }
      

  6.   

    上述代码中:
    //???下面的语句不能将第一个菜单项的第一个子菜单项无效? 为什么?
      pChildMenu->EnableMenuItem(0,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);