现在选中的菜单项前面加个选中标志,点一下取消选中标志,请高手指点

解决方案 »

  1.   

    相应这个菜单项的 WM_COMMAND 消息,调用 CheckMenuItem/CheckMenuRadioItem 或 SetMenuItemInfo
      

  2.   

    ON_UPDATE_COMMAND_UI 宏
    使用“属性”窗口将用户界面对象连接到命令目标对象中的命令更新处理程序。它自动将用户界面对象的 ID 连接到 ON_UPDATE_COMMAND_UI 宏,并在对象中创建将要处理更新的处理程序。有关更多信息,请参见将消息映射到函数。
    例如,若要更新程序“编辑”菜单中的“全部清除”命令,请使用“属性”窗口在所选类中添加消息映射项,在类声明中添加称为 OnUpdateEditClearAll 的命令更新处理程序的函数声明,以及在类的实现文件中添加空函数模板。函数原型如下所示:
    afx_msg void OnUpdateEditClearAll( CCmdUI* pCmdUI );
    在消息函数中pCmdUI->SetCheck(条件变量);
      

  3.   

    你先说说我的回答你有没有看懂,如果没有,哪里不懂.
    如果懂了,自己试试,在试的过程中又遇到了什么问题.....这样一步一步来啊.如果我直接给你一个Project,你看不懂也不会有帮助的.
      

  4.   

    CMenu* mmenu=GetMenu();   
    CMenu* submenu=mmenu->GetSubMenu(0);   
    submenu->CheckMenuItem(ID_MENU_XXX,MF_BYCOMMAND | MF_UNCHECKED );
    submenu->CheckMenuItem(ID_MENU_XXX,MF_BYCOMMAND | MF_CHECKED );
      

  5.   

    调用 CheckMenuItem这个,但我调用的时候它说我的菜单句柄没定义,其实就是还不知道CheckMenuItem怎么用,我是在这里响应的,请帮我看下  谢谢!!
           
                   case WM_COMMAND:
    switch (LOWORD(wParam))
    {
          CheckMenuItem (hmenu,IDM_RED,MF_CHECKED);
    }
    break;
      

  6.   


    另外,整个switch语句语法错误吧?case呢?
      

  7.   

    如果是文档的菜单,用UpdateCommandUI,普通dialog的菜单,一般用CheckMenuItem
      

  8.   

    4楼说的对,就是映射ON_UPDATE_COMMAND_UI,在相应函数里添加pCmdUI->SetCheck(bChecked);即可。