好象基于Dialog的不行的
用SDI + CFormView 试试

解决方案 »

  1.   

    快捷菜单,或者是用TrackPopupMenu生成的菜单,不支持MFC的OnUpdateXXXX机制。因为这样的菜单是你动态生成的,在生成过程中就可以设置它的状态呀!
      

  2.   

    to horris(僧推月下门):
    “在生成过程中就可以设置它的状态”,那怎么实现呢,能给个提示或给个例子吗?
    谢谢:)
      

  3.   

    to lms():
    我的程序是不用CView的,而且现在都快完成了,不能再改了吧,还有什么建议吗?
      

  4.   

    CMenu::AppendMenu 
    BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
    BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );UINT nFlags的取值:
    MF_CHECKED
    MF_UNCHECKED
    MF_DISABLED
    MF_ENABLED
    MF_GRAYED
    ........
      

  5.   

    在你的菜单OnXXX  (不是OnUpdateXXXXX)中加入
    GetMenu()->CheckMenuItem(IDM_XXX,MF_CHECKED);//或MF_UNCHECKED绝对可以!
      

  6.   

    如果你想禁用的话,则用EnableMenuItem(...)
      

  7.   

    加入WM_INITMENUPOPUP的handler即可,每次menu弹出前,会有这个消息,这时可以加灰或做其他事,mfc也是这样做的