不好意思,都学了1年了还不会。帮忙。

解决方案 »

  1.   

    在执行菜单命令的类中选中命令ID,映射UPDATE_COMMAND_UI消息
    void CYourClass::OnUpdateYourID(CCmdUI* pCmdUI) 
    {
      pCmdUI->SetCheck(TRUE);//单选
      pCmdUI->SetRadio(TRUE);//复选
    }
      

  2.   

    使用CheckMenuItem函数
    CheckMenuItem:Places a check  next to or removes a check  from a menu item in the pop-up menu.
      

  3.   

    void CMainFrame::OnUpdateYourID(CCmdUI* pCmdUI) 
    {
      pCmdUI->SetCheck(TRUE);
    }
      

  4.   

    llm308(黎明) ( ) 给我个简单源码吧,
    [email protected]基于DLG的。谢谢了,
      

  5.   

    基于DLG的?你不早说,基于DLG的必须在空闲消息处理函数中更新控件状态才能使菜单或工具栏的状态改变。
    空闲消息处理如下:
    1.#include "afxpriv.h"
    2.ON_MESSAGE(WM_KICKIDLE,OnModalIdle)//增加消息映射
    3.在.h文件中声明
    afx_msg void OnModalIdle(WPARAM wParam,LPARAM lParam);
    4.在.cpp文件中实现
    void CMyDlg::OnModalIdle(WPARAM wParam,LPARAM lParam)
    {
       UpdateDialogControls(AfxGetApp()->m_pMainWnd,true);
    }
    试试看行不行,不行的话我再给你写一个
      

  6.   

    终于解决了,在空闲消息处理函数中加入下列代码就可以了
    CMenu* pMainMenu = GetMenu();
     CCmdUI cmdUI;
     for (UINT n = 0; n < pMainMenu->GetMenuItemCount(); ++n)
     {
      CMenu* pSubMenu = pMainMenu->GetSubMenu(n);
      cmdUI.m_nIndexMax = pSubMenu->GetMenuItemCount();
      for (UINT i = 0; i < cmdUI.m_nIndexMax;++i)
      {
       cmdUI.m_nIndex = i;
       cmdUI.m_nID = pSubMenu->GetMenuItemID(i);
       cmdUI.m_pMenu = pSubMenu;
       cmdUI.DoUpdate(this, FALSE);
      }
     }另外,UpdateDialogControls(AfxGetApp()->m_pMainWnd,true);
    是更新控件状态的,你可以试试,也是好使的,终于给你解决了!!!,呵呵!