我已经响应了UPDATE_COMMAND_UI,而且调试能够进入该函数,可SetCheck()就是不起作用,不知是什么原因!如果把该菜单加入Dialog 属性中的系统菜单,是起作用的。可我又不想让它是系统菜单!(因为如果是系统菜单的话,我做几个按钮菜单怎么办呢,只能有一个系统菜单啊?)怎么办呢?

解决方案 »

  1.   

    是你自己做的按钮菜单,还问人家怎么check啊!
      

  2.   

    我就是SetCheck()响应不了啊!
      

  3.   

    CMenu::ModifyMenu(ID,MF_BYCOMMAND|MF_CHECKED,ID,"");
      

  4.   

    在UPDATE_COMMAND_UI的消息响应函数里,
    pCmdUI->SetCheck(勾选的条件);
      

  5.   

    我碰到过这个问题,我有一个办法:(要自己调用CheckMenuItem函数)
    CMenu *pAddinMenu,*pTopMenu;
    pTopMenu=GetMenu();
    ASSERT(pTopMenu!=NULL);
    pAddinMenu=pTopMenu->GetSubMenu(0);
    ASSERT(pAddinMenu!=NULL);
    pAddinMenu->CheckMenuItem(0,MF_BYPOSITION |
    (ComConfig.bNihe? MF_CHECKED : MF_UNCHECKED));
      

  6.   

    to goodboyyxh()这段程序要加在在UPDATE_COMMAND_UI的消息响应函数里吗?你有相关的例子吗?
      

  7.   

    to goodboyyxh()pTopMenu=GetMenu();            //得到的是系统菜单啊,我就是不想用系统菜单的!
      

  8.   

    那就这样啊:
    CMenu *menuTemp;
    menuTemp=new CMenu;
    menuTemp->LoadMenu(IDR_YOURMENU);
    /*

    */
    delete menuTemp;
    得到的就是你的菜单的指针,然后就去发挥吧。
      

  9.   

    在UPDATE_COMMAND_UI的响应函数中
    pCmdUI->m_pMenu->CheckMenuItem(ID_MENU1,MF_CHECKED);可是还是没反应啊!急!
      

  10.   

    void CXXXXApp::OnUpdateYourID(CCmdUI* pCmdUI) 
    {
       pCmdUI->SetCheck(TRUE);
    }POINT pt;
    GetCursorPos(&pt);
    CWnd* pWnd=AfxGetMainWnd();
    CMenu cMenu;
          cMenu.CreatePopupMenu(); 
    cMenu.AppendMenu(MF_STRING,ID_YOURID, "YourID(&Z) Ctrl+Z");
    cMenu.AppendMenu(MF_SEPARATOR); 
           cMenu.AppendMenu(MF_STRING,ID_APP_EXIT, "退出(&X)            Ctrl+X");
           SetForegroundWindow();
           cMenu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, 
            pt.x, pt.y, pWnd); 
            cMenu.DestroyMenu();
      

  11.   

    to goodboyyxh:
       是啊!to KcSoft(蓝珍珠精灵) :
       没反应!发个例子给我,好吗?[email protected]