一个无模式对话框,总是在遇到回车后就退出了。我只想在鼠标点击OK时再退出,怎么办?
好像如果焦点在编辑框的时候输入回车,先清理对话框,后响应编辑框的KILLFOCUS消息,这样会遇到一些问题。

解决方案 »

  1.   

    去除ID为:IDOK和IDCANCEL的按钮.
      

  2.   

    重载 OnOk  把里面的东西删了
      

  3.   

    ESC也会有类似现象。类似处理
      

  4.   

    我处理IDOK了,不管用呢? 
      

  5.   

    奇了怪了,我原来响应IDOK按钮事件来的,现在我吧按钮都换了,新添加别的按钮。回车还是照关不误。按键事件在这个对话框里面不响应,和无模式对话框的消息响应机制有关?
      

  6.   

         在dlg的PreTranslateMessage 中加上 
          if(pMsg->message==WM_KEYDOWN && pMsg->wParam   ==   VK_RETURN)   {
            if (FromHandle(pMsg->hwnd)->GetDlgCtrlID() == IDOK)
    {
        return 0; 
    }
         }
      

  7.   

    就是对话框指针new,然后Create,然后showwindow什么的。没法贴啊。
      

  8.   

    就是6楼的办法,屏蔽掉回车和ESC的按键消息!
      

  9.   

    /************************************************************************/
    /*                                                                      */
    /************************************************************************/
    BOOL CInfoShow::PreTranslateMessage( MSG* pMsg )
    {
    if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
    {
    return TRUE;      //屏蔽掉Esc键
    }
    if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
    {
    return TRUE;      //屏蔽掉Enter键
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    来个完整的
      

  10.   

    PreTranslateMessage逮到回车wparam == 13 了,问题解决,谢谢各位!结贴!