基于对话框的应用程序程序,UPDATE_COMMAND_UI就是起作用。
解决的方法是:
HMENU hmenu=::GetMenu(this->m_hWnd);
HMENU hs=::GetSubMenu(hmenu,0/*某个位置,0是第一子菜单*/);

::EnableMenuItem(hs,IDM_XXXXX,MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);//无效 ::EnableMenuItem(hs,IDM_YYYYY,MF_BYCOMMAND|MF_ENABLED);//有效

解决方案 »

  1.   

    基于对话框的应用程序程序,UPDATE_COMMAND_UI就是不起作用。
    解决的方法是:
    HMENU hmenu=::GetMenu(this->m_hWnd);//主菜单
    HMENU hs=::GetSubMenu(hmenu,0/*某个位置,0是第一子菜单,其余类推*/);
                                
    ::EnableMenuItem(hs,IDM_XXXXX,MF_BYCOMMAND¦MF_DISABLED¦MF_GRAYED);//使无效
    ::EnableMenuItem(hs,IDM_YYYYY,MF_BYCOMMAND¦MF_ENABLED);//使有效
      

  2.   

    基于对话框的应用程序程序,UPDATE_COMMAND_UI就是不起作用。
    解决的方法是:
    HMENU hmenu=::GetMenu(this->m_hWnd);//主菜单
    HMENU hs=::GetSubMenu(hmenu,0/*某个位置,0是第一子菜单,其余类推*/);
                                
    ::EnableMenuItem(hs,IDM_XXXXX,MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);//使无效
    ::EnableMenuItem(hs,IDM_YYYYY,MF_BYCOMMAND|MF_ENABLED);//使有效 
    上面的¦是逻辑或的HTML特殊码
      

  3.   

    但是我是在系统图标处的右键弹出菜单中做,MENU hmenu=::GetMenu(this->m_hWnd);//主菜单
    该怎么处理?谢谢!!!
      

  4.   

    我是用别人的一个类:CSystemTray
      

  5.   

    I have finished it,thank you to give me these informatioms.5 fen to give you !!!
      

  6.   

    你在这个类(CSystemTray )中找到这样的代码:(是弹出菜单代码)
    pcmenu->TrackPopupMenu(...);或TrackPopupMenu..(hmenu,...);
    这里pcmenu是CMenu类的一个对象指针,hmenu是HMENU 型的变量
    然后就在这行代码后面或前面(你自己试一下,看哪个有效)加上
    ::EnableMenuItem(pcmenu->m_hMenu,IDM_XXXXX,MF_BYCOMMAND¦MF_DISABLED¦MF_GRAYED);
    //使无效

    ::EnableMenuItem(hmenu,IDM_XXXXX,MF_BYCOMMAND¦MF_DISABLED¦MF_GRAYED);//使无效
    不好意思,我喜欢直接使用WIN32 API,不太喜欢MFC