我想将选中某个菜单项是有打钩的标记,再选的时候去掉钩子,但在用CheckMenuItem()时出错
请问应该怎么用啊
示例下啊

解决方案 »

  1.   

    用ClassWizard给菜单项添加消息的时候,一般都有两个消息,一个是菜单响应消息,一个是更新菜单状态消息,也就是那个OnUpdate…()的函数,你可以在用一个成员bool变量(如m_bIsChecked)记录和设置其状态,在该函数中添加:m_bIsChecked = !m_bIsChecked;
    pCmdUI->SetCheck(m_bIsChecked);
      

  2.   

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
                      pSysMenu->CheckMenuItem(IDM_ABOUTBOX,
    _MF_CHECKED);
                                }
      

  3.   

    呵呵,应该不难啊,不知道问题出哪儿了,,我看看吧,记得把Debug目录夏的所有文件都删除后再发,:)
      

  4.   

    看了你的程序,才发现你的菜单是弹出式的,弹出式的菜单必须每次都必须初始化(除非它的ID和主菜单中的相同,系统会根据相同ID进行相同初始化,但是你的是基于对话框的,没有主菜单),所以在那个Update菜单的命令中设置是不行的,应该放在那个弹出菜单的函数:OnContextMenu()中,如:
    在该函数中的语句:
    pmenu=menu.GetSubMenu(0);
    后面增加这样的语句即可:
    if(m_bIsChecked)
        pmenu->CheckMenuItem(IDM_FIRST, MF_BYCOMMAND|MF_CHECKED);
    else
        pmenu->CheckMenuItem(IDM_FIRST, MF_BYCOMMAND|MF_UNCHECKED);如果有多个菜单,可能得进行多次这样的处理,呵呵
      

  5.   

    然后将那个Update菜单的函数删除,并将语句:m_bIsChecked = !m_bIsChecked;放到你的菜单响应函数中去,就可以了