为什么我用
pSubMenu->EnableMenuItem(IDM_PauseNetwork, MF_DISABLED | MF_GRAYED);
int a = pSubMenu->EnableMenuItem(IDM_PauseNetwork, MF_DISABLED | MF_GRAYED);他的返回值a竟然是0,当然该菜单也没有变灰~~我查了msdn,上面写着返回值只有这几种情况:Previous state (MF_DISABLED, MF_ENABLED, or MF_GRAYED) or –1 if not valid.都不知道为什么,我这里竟然出来个0!!!

解决方案 »

  1.   

    #define MF_ENABLED          0x00000000L应该是  MF_ENABLED
      

  2.   

    你的第二个参数至少得再or一个常量吧?
    MF_BYCOMMAND   
    MF_BYPOSITION
      

  3.   

    pSubMenu->EnableMenuItem(IDM_PauseNetwork,MF_BYCOMMAND | MF_GRAYED);

    int a = pSubMenu->EnableMenuItem(IDM_PauseNetwork,MF_BYCOMMAND | MF_GRAYED);我改了之后,发现其返回值是MF_GRAYED,但是菜单还是没有被改成灰色.......
      

  4.   

    它好像在说谎那样,一边返回一个disable,一边可以让你按下去
      

  5.   

    谬论!
    我在一个ID为IDM_PauseNetwork的按钮的点击响应函数里面写下如下代码:
    但是我可以不断的单击它而且每一次单击之后都会有一个messagebox提示MF_DISABLED....pSubMenu->EnableMenuItem(IDM_PauseNetwork,MF_BYCOMMAND | MF_DISABLED);

    int a = pSubMenu->EnableMenuItem(IDM_PauseNetwork,MF_BYCOMMAND | MF_DISABLED);

    if(a == MF_GRAYED)
    {
    AfxMessageBox("MF_GRAYED");
    }
    else if(a == MF_DISABLED)
    {
    AfxMessageBox("MF_DISABLED");
    }
    else if(a == MF_ENABLED)
    {
    AfxMessageBox("MF_ENABLED");
    }
    else if(a == -1)
    {
    AfxMessageBox("-1");
    }
    else
    {
    CString s;
    s.Format("%d",a);
    AfxMessageBox(s);
    }