我在菜单里选中一项,然后弹出一个对话框,当我在里面输入数据时,由于某种原因弹出一个messagebox,我点击ok 后原来的对话框也消失了,但是我不想让对话框消失,应该怎么做?谢谢!

解决方案 »

  1.   

    是不是你的对话框程序出了错误啊?
    如果出了错误想不退出,那就在可能出错的程序处,增加try...catch处理异常
    比如
    try{
    }
    catch(CException &e)
    {
    }
      

  2.   

    void CUpdateRowDlg::OnKillfocusNewtbledit() 
    {
    UpdateData(TRUE);
    int nIndex;
    CString strtemp,strtemp1;
    CDatabase m_Database; pDbset=new CDbtSet(&m_Database);
    pTset=new CTset(&m_Database);
    pDbset->Open(AFX_DB_USE_DEFAULT_TYPE,"Select * from index");//同上! 
    if(MessageBox("确认添加新表?","提示",MB_ICONQUESTION|MB_OKCANCEL)==IDOK)
    {
    pDbset->MoveFirst();
    while(pDbset->m_TableName!=m_NewTableName)
    {
    if(!pDbset->IsEOF())
    pDbset->MoveNext();
    }
    if(pDbset->IsEOF())
    {
    pDbset->MoveLast();
    nIndex=pDbset->m_ID;
    pDbset->AddNew();
    pDbset->m_ID=nIndex+1;
    pDbset->m_TableName=m_NewTableName;
    pDbset->m_P_='0';
    pDbset->m_V_='0';
    pDbset->Update();
    pDbset->Close();
    delete pDbset; strtemp1.Format("CREATE TABLE %s([F(GHz)] NUMBER,[EM(R)] NUMBER,[EM(I)] NUMBER,[MU(R)] NUMBER,[MU(I)] NUMBER)",m_NewTableName);
    m_Database.ExecuteSQL(strtemp1);
    strtemp.Format("Select * from %s",m_NewTableName);
    pTset->Open(AFX_DB_USE_DEFAULT_TYPE,strtemp);
    GetDlgItem(IDC_FREQCOMBO)->EnableWindow(TRUE); }
    else if(MessageBox("表已存在是否更新数据?","提 示",MB_ICONEXCLAMATION|MB_OKCANCEL)==IDOK)
    {
    GetDlgItem(IDC_FREQCOMBO)->EnableWindow(TRUE);

    }
    }
    }
    应该没出错啊?!
      

  3.   

    while(pDbset->m_TableName!=m_NewTableName)
    {
    if(!pDbset->IsEOF())
    pDbset->MoveNext();
    }
    ///可能进入死循环
      

  4.   

    pDbset->Open(AFX_DB_USE_DEFAULT_TYPE,"Select * from index");
    操作是否成功?应该判断一下
      

  5.   

    striking(硬撑者) :刚才那段已修改不会出错,而且打开数据库库后,index有更新,新表也已经建立。
      

  6.   

    UpdateData(TRUE);有可能导致对话框弹出.
      

  7.   

    我跟踪了一下不是messagebox的原因而是调用了搽除背景消息,我怎么能在按回车是不让对话框被销毁?
      

  8.   

    你需要重载对话框的OnOK() 和 OnCancel();函数;void CMyDlg::OnOK()
    {
    }void CMyDlg::OnCancel()
    {
    }