不能这么用,你应该处理UPDATE_COMMAND_UI这个消息,重载函数。

解决方案 »

  1.   

    用yourmenu.CheckMenuItem(IDM_YOUR_ID, MF_CHECKED);
      

  2.   

    我试过,但是只有在OnContextmenu中可以,在其它地方均出现Debug Assert Fail.我定义一个CMenu的变量作为成员,然后引用menu.
      

  3.   

    基于CDialog的Class没有对WM_INITMENUPOPUP消息进行处理,必须自己加入对该消息的处理,才能使得Enable,SetCheck函数有效。 
      

  4.   

    现在资源编辑器中加入菜单(这一点你肯定会吧?),譬如将其ID设为IDR_CONTEXTMENU,然后加入上下文菜单事件WM_CONTEXTMENU的函数,编辑函数如下:
    void CDay10View::OnContextMenu(CWnd* pWnd, CPoint point) 
    {
    // TODO: Add your message handler code here
    CMenu menu;
    menu.LoadMenu(IDR_CONTEXTMENU);
    CMenu *pContextMenu=menu.GetSubMenu(0);
    pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|
    TPM_LEFTBUTTON|TPM_RIGHTBUTTON,
    point.x,point.y, AfxGetMainWnd());
    }
    绝对好使。