在以下语句中,为什么没有改变啊,逻辑变量也确实得到了啊??
pCmdUI->SetCheck(bChecked);

解决方案 »

  1.   

    1首先bChecked赋初值;
    2搜索其他用到bChecked的地方,看值是否都处理了
    3检查ON_UPDATE_COMMAND_UI这个是否映射对
    4处理函数是否添加
    5pCmdUI->SetCheck(!bChecked);
      

  2.   

    下面的代码有错误吗,如果没有,还需要设置其它地方吗???
    void CVideoCapDlg::OnPreview() 
    {
    bChecked=!bChecked;
    }void CVideoCapDlg::OnUpdatePreview(CCmdUI* pCmdUI) 
    {
    pCmdUI->SetCheck(bChecked);
    }
      

  3.   

    3检查ON_UPDATE_COMMAND_UI这个是否映射对
      

  4.   

    http://community.csdn.net/Expert/topic/4516/4516068.xml?temp=.6119806
      

  5.   

    Snow_Ice11111(雪上加冰)
     想用这个方法啊pCmdUI->SetCheck(bChecked);
    不用CMenu的方法
      

  6.   

    试试贴中未名朋友的:DrawMenuBar();
      

  7.   

    你的菜单是否是自绘风格(MF_OWNERDRAW)的,如果是的话就不会在菜单前显示小钩的。
      

  8.   

    还没解决么?下面是我记录的一点心得,已全部测试通过:SDI或MDI工程中,在菜单项前打上或取消复选框标志。先给CMainFrame类添加一个BOOL类的成员变量m_stat,然后在菜单项的响应函数体中加入:
    m_stat=!m_stat;
    并在菜单项的UPDATE_COMMAND_UI响应函数中加入:
    pCmdUI->SetCheck(m_stat);
    注:如果是自绘风格(MF_OWNERDRAW)的菜单,就不会在菜单前显示小钩的。
    -----------------------------------------------------------
    对话框工程的话,先同样在对话框类中添加一个BOOL类的成员变量m_stat,然后用下面代码实现:
    HMENU hMenu=::LoadMenu(NULL,MAKEINTRESOURCE(IDR_MENU1));    //IDR_MENU1为资源中菜单的ID
    ::SetMenu(m_hWnd,hMenu);
    if(m_stat)
    CheckMenuItem(hMenu,IDC_ENABLE,MF_UNCHECKED);       //IDC_ENABLE为菜单前要打钩的子项
    else
    CheckMenuItem(hMenu,IDC_ENABLE,MF_CHECKED);
    m_stat=!m_stat;
    ---------------------------------------------
    也反复试过了,对话框工程中用pCmdUI->SetCheck(m_stat);的方法无效。