小弟是一个才入行VC不久菜鸟,最近在建立Dialog对话框时不做任何修改直接去运行它时只要点击回车键那这个应用程序就马上结束了,怎么才能解决这个问题啊大侠?

解决方案 »

  1.   

    重载  OnOK 函数直接退出, 不要执行它的  CDialog::OnOK()函数
      

  2.   

    BOOL CYourDialog::PreTranslateMessage(MSG*pMsg0
    {
    CWnd* pWnd==CWnd::FromHandle(pMsg->hwnd);
    if((pWnd==this || (NULL!=pWnd && pWnd->GetParent()==this)) && pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ENTER)
    return TRUE;
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  3.   

    把CDialog::OnOK()删掉就可以了!
      

  4.   

    http://community.csdn.net/Expert/topic/3407/3407045.xml?temp=.6321985
      

  5.   

    重载  OnOK() 函数 和OnCancel()函数
      

  6.   

    重载OnOK()OnCancel()或拦截消息PreTranslateMessage
     if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN )   //判断是否按回车
       return TRUE;
      

  7.   

    PreTranslateMessage,BOOL CCollateralTestDlg::PreTranslateMessage(MSG* pMsg)
    {
        if(pMsg->message == WM_KEYDOWN)
        {
    if (pMsg->wParam == VK_ESCAPE) //Esc键不退出程序
    {
    return TRUE;
    }
    else if(pMsg->wParam == VK_RETURN)
    {
    if(pMsg->hwnd != GetDlgItem(IDC_BUTTON_QUESTION_ADD)->GetSafeHwnd() &&
    pMsg->hwnd != GetDlgItem(IDC_BUTTON_QUESTION_MODIFY)->GetSafeHwnd() &&
    pMsg->hwnd != GetDlgItem(IDC_BUTTON_QUESTION_REMOVE)->GetSafeHwnd() &&
    pMsg->hwnd != GetDlgItem(IDC_BUTTON_RULE_ADD)->GetSafeHwnd() &&
    pMsg->hwnd != GetDlgItem(IDC_BUTTON_RULE_MODIFY)->GetSafeHwnd() &&
    pMsg->hwnd != GetDlgItem(IDC_BUTTON_RULE_REMOVE)->GetSafeHwnd() &&
    pMsg->hwnd != GetDlgItem(IDC_BUTTON1)->GetSafeHwnd() &&
    pMsg->hwnd != GetDlgItem(IDC_BUTTON2)->GetSafeHwnd())
    {
    return TRUE;
    }
    }
       } return CDialog::PreTranslateMessage(pMsg);
    }我还想让我的button处理回车消息。
      

  8.   

    比如说你定义的那个project名称叫"mytry",那么你会发现你的CMytryDlg.cpp 中,会有一个CMytryDlg::OnOk()
    {
    CDialog::OnOk();
    }
    你所要做的就是把CDialog::OnOk()这条语句删除,原因是,你如果不重载OnOk函数,那么系统会根据这条语句自动调用父类的OnOk函数,这个函数就是定义了你一按钮就退出对话框的,明白了吗?
      

  9.   

    支持 回复人: huwei001982(編程浪子) ( ) 信誉:105  
    的说法
      

  10.   

    在你的对话框内的ONOK和ONCANCLE里面,都写一个RETURN,其余的都删掉。。呵呵~
      

  11.   

    可以如楼上的代码示例,自己重载一个PreTranslateMessage,过滤掉回车和ESC的消息。
      

  12.   

    DentistryDoctor(牙科医生(潜心修内功,向各位大师取经了)) 的是正解