在一个单文档程序中,开始让第二个菜单项为灰色!
我想使用菜单项调用对话框,在对话框中点击确定,使得第二项菜单为可用状态!
void CDialog1::OnOK() 
{
// TODO: Add extra validation here
CMenu* pMenu=this->GetMenu();
        pMenu->EnableMenuItem(1,MF_BYPOSITION|MF_ENABLED);
CDialog::OnOK();
}
执行并没问题,但是当我点击“确定”时,出来一个提示“unhandled exception in aa.exe(mfc42d.dll):0xc0000005:access violation”!说生成的单文档程序需关闭!可能是内部有冲突!但是却不能调出来!
请大家帮忙!

解决方案 »

  1.   

    CMenu* pMenu=this->GetMenu(); 
            pMenu->EnableMenuItem(1,MF_BYPOSITION ¦MF_ENABLED); 
    别用this->GetMenu
    this现在指向的是对话框
      

  2.   

    Menu是视图的,不是对话框的,不能在对话框里这么调用。CDialog1 dlg;
    if (dlg.DoModal() == IDOK)
    {
        CMenu *pMenu = GetMenu();
        if (pMenu)
           p->EnableMenuItem(1, MF_BYPOSITION | MF_ENABLED);
    }
      

  3.   

    还没试你的!不过你的提示很好!我已经搞定了!呵呵
    void CDialog1::OnOK() 
    {
    // TODO: Add extra validation here
    CWnd* pMain = AfxGetMainWnd();
    CMenu* pMenu=pMain->GetMenu();
            pMenu->EnableMenuItem(1,MF_BYPOSITION|MF_ENABLED);
    CDialog::OnOK();
    }