创建了一个基于对话框的程序,加了一个popup菜单IDR_MENU1。
在CCheckMenuDlg中添加成员变量CMenu  m_Menu;
                             BOOL   m_bFirst;  初始化 m_Menu.LoadMenu(IDR_MENU1); m_bFirst=TRUE;
void CCheckMenuDlg::OnFirst() 
{
   if (m_bOnline)   
     {
       m_Menu.CheckMenuItem(IDC_FIRST,MF_UNCHECKED | MF_BYCOMMAND);
       m_bOnline = FALSE;
     }
   else
    {
       m_Menu.CheckMenuItem(IDC_FIRST, MF_CHECKED | MF_BYCOMMAND);
       m_bOnline = TRUE;
     }如果在菜单项中选择了checked项,菜单项前面会出现对号,点击后消除不掉对号。
若是不选择checked项,点击后也加不上对号,应该怎么办呢?
看了很多之前的帖子,大家都说这么做,我的程序怎么没反应呢?

解决方案 »

  1.   

    我的是这样写的void CMainFrame::OnUpdateOperationTop(CCmdUI* pCmdUI) 
    {
    // TODO: Add your command update UI handler code here
    if(if_top)
    pCmdUI->SetCheck(1);
    else
    pCmdUI->SetCheck(0);
    }
      

  2.   

    恩~
    一般的写法都是楼上的写法~~~
    if(m_bOnline)
    pCmdUI->SetCheck(1);//选中~~~
    else
    pCmdUI->SetCheck(0);
      

  3.   

    用楼上的方法也没弄好。
    哪位热心人能详细说说,最好有代码
    也可以把这个功能的源代码发给我[email protected]
      

  4.   

    对话框得响应WM_KICKIDLE消息来更新显示.即UpdateCmdUI
      

  5.   

    楼上的,我在程序中加上了如下:
    //{{AFX_MSG(CStateDlg)
    afx_msg LRESULT OnKickIdle(WPARAM wParam, LPARAM lParam);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP(CStateDlg, CDialog)
    //{{AFX_MSG_MAP(CStateDlg)
    ON_MESSAGE(WM_KICKIDLE,   OnKickIdle)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()LRESULT CStateDlg::OnKickIdle(WPARAM wParam, LPARAM lParam)
    {
       UpdateDialogControls(this, TRUE);
       return 0;
    }编译总通不过error C2065: 'WM_KICKIDLE' : undeclared identifier仔细说说怎么使用WM_KICKIDLE
      

  6.   

    http://support.microsoft.com/kb/242577/en-us
      

  7.   

    感谢lixiaosan(小三),问题解决!事情原来是这个样子地~~~~~~~
      

  8.   

    非常感谢lixiaosan(小三),我的问题也解决了!