我希望在对话框中做了修改然后按确定后在完成相应操作的同时在主窗口菜单的某个选项前面打勾。
我通过下面的代码来获得菜单的句柄
CMainFrame* pWnd = (CMainFrame*)AfxGetMainWnd();
HMENU menu = pWnd->GetMenu()->GetSafeHmenu();
然后用CheckMenuItem函数来控制菜单。
可是运行结果发现菜单没有响应
调试发现menu没有得到相应的菜单句柄,而且unused也无法得到运算结果
请问是什么原因?

解决方案 »

  1.   

    通过这个菜单项的CmdUI来动态更新菜单。
    设个标志让菜单更新的时候,根据标志判断打不打勾。
      

  2.   

    给某菜单ID在MainFrame上添加MessageHandle:UPDATE_COMMAND_UIvoid CMainFrame::OnUpdateXXX(CCmdUI* pCmdUI) 
    {
    // TODO: Add your command update UI handler code here
    pCmdUI->SetCheck(m_b是否打勾);
    }
      

  3.   

    我已经添加了void CMainFrame::OnUpdateXXX(CCmdUI* pCmdUI) 
    而且这些功能都已经实现了
    现在我想做的是怎样在他的子对话框中控制这个菜单实现打勾的功能
      

  4.   

    在其它的子对话框中控制MainFrame中的某个全局Bool:“m_b是否打勾” 就可以了
      

  5.   

    void CMainFrame::OnUpdateXXX(CCmdUI* pCmdUI) 
    {
    // TODO: Add your command update UI handler code here
    pCmdUI->SetCheck(m_b是否打勾);
    }他的子对话框中:
    CMainFrame* pFrame =(CMainFrame*)  AfxGetMainWnd()
    pFrame->m_b是否打勾=TRUE; //把勾打上
    pFrame->m_b是否打勾=FALSE; //把勾去掉