我在一个CDialog中的一个事件中
void CNetserverDlg::OnKillfocusCardId() 
{
// TODO: Add your control notification handler code here
AfxMessageBox("此号码不存在请于有关单位联系");
}
输入后跳出AfxMessageBox("此号码不存在请于有关单位联系");
按确定后CDialog随之不见了
不知道是没有重绘还是被释放了
那怎样才能使他再次输入其它事件

解决方案 »

  1.   

    是不是先按了对话框的OK键,然后跳出这个MessageBox?
    如果是这样的话,可能是调用了CDialog::OnOK(),
    才使得对话框关闭了
    在这个OnKillfocus函数中,是不是也调用的基类的OnKillfocus函数?
      

  2.   

    重载WM_CLOSEvoid CNetserverDlg::OnClose() 
    {
        int a=MessageBox("此号码不存在请于有关单位联系","提示?",MB_YESNO|MB_ICONQUESTION);                 if(a==IDYES)
      CDialog::OnClose();//如果按确定,则关闭对话框 if(a==IDCANCEL)//如果按了取消则继续执行(不关闭对话框)
    {
    ..........
    }
              
    }
      

  3.   

    我在CDialog中什么都没做只是新建一个edit
    在edit的OnKillfocusEdit1()事件中
    也只有这个语句
    AfxMessageBox("此号码不存在请于有关单位联系");
    但按确定后CDialog随之不见了
    而我并没有执行或引用CDialog::OnOK();
      

  4.   

    大家可以试一试
    用向导做一个(用MFC APPWIZARD)创建一个基本对话类型
    后新建一个edit来是一试
      

  5.   

    void CNetserverDlg::OnKillfocusCardId() 你讲的不太清楚,你通过什么消息让上面的函数作用的。
    在CEdit空间里面编辑之后如何动作啊??是不是点了确定按钮或回车。总不能弹出对话框后直接弹出messagebox吧??如果是就重载onok函数吧。
      

  6.   

    模态对话框一般就这样,只在原来的对话框中添加一个edit控件,点击确定,会调用OnOK函数,
    除非重载这个函数,不再让他调用CDialog::OnOK, 或者自己添加一个按钮,然后编写相应的代码就可以了.
      

  7.   

    在编辑完EDIT后回车
    跳出AFXMESSAGEBOX所产生的对话框单击AFXMESSAGEBOX里的确定按钮
    对话框就被释放了
      

  8.   

    我也建立了一个BUTTON并建立了它的单击处理函数
    void CNetserverDlg::OnOk() 
    {
    // TODO: Add your control notification handler code here

    CDialog::OnOK();
    }
    但CDialog照样自己释放了
      

  9.   

    这个是被释放了,你又没有 new 一下
      

  10.   

    默认情况下回车不被edit响应 所以按回车后应该不会有killfocus事件的发生 你是不是添加了回车的响应导致退出的
    我刚试了 一个edit响应失去焦点的事件后没问题的 dialog不会退出(按道理也是没关系得..)
      

  11.   

    我测试了一下,你如果按tab键时失去焦点时没问题,
    你肯定是输入数据后按回车键了,那样对话框会自动调用CDialog::ONOK()函数;
    当然退出了如何处理ONOK函数,看看VC++技术内幕。。