我在单文档中插入Dialog 运行时候在Edit控件中按下Enter 就退出了!
   if(GetDlgItem(IDC_EDIT1)->GetFocus())
    {
          if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)     
{    UpdateData(TRUE);
if(m_Edit=="")
{
return MessageBox("密码不能为空!","警告");
}

    } 就是在Edit控件的时候弹出了MessageBox,在按TAB 切换在“取消”按钮上按下Enter 也会弹出MessageBox;
   GetDlgItem(IDC_EDIT1)->GetFocus()这个不是已经指定ID的么?我又else if(GetDlgItem(IDC_BUTTON1)->GetFocus()))一下,一点效果都没,求高手们别潜水了!帮忙看下啊

解决方案 »

  1.   

    //对话框界面上按回车和ESC键退出问题的处理   
      处理方法:去除OnOK和OnCancel的默认处理   
        
      1.分别给OK   和   Cancel   按钮添加点击消息   
        void   CParamSetDlg::OnOK()     
      {   
      //       注意不加处理   
      }   
        
      void   CParamSetDlg::OnCancel()   
      {   
      //注意不加处理   
      }   
        
      2.去掉OK按钮的   Default属性   
        
      3.改变OK按钮的ID(如:ID_OK)后再给其添加点击消息   
      void   CTest1Dlg::On_Ok()     
      {   
      //   TODO:   Add   your   control   notification   handler   code   here   
      CDialog::OnOK();   
      }   
      完成以上步骤   回车时不会退出,按Esc时退出   
        
      注:如果Cancel按钮也按OK按钮同样处理则Esc失效
      

  2.   

    从CEdit派生一个新类BOOL CNewEdit::PreTranslateMessage(MSG* pMsg) 
    {
      // TODO: Add your specialized code here and/or call the base class
      if(pMsg->message == WM_KEYDOWN 
        && pMsg->wParam == VK_RETURN)
      {
        if( !(GetStyle() & ES_WANTRETURN) )  //NO ES_WANTRETURN Style                    
          return TRUE;
      }
      return CEdit::PreTranslateMessage(pMsg);
    }
      

  3.   

    不行把,如果想你那样写了 虽然重载OnOK()和OnCancel() 
    那我的enter键就不能响应“取消BUTTON”了
      

  4.   

    3L我把你的代码试了一下,创建了NEWEdit类,也是不行啊,能说下到底什么实现么
      

  5.   

    [
    3L我把你的代码试了一下,创建了NEWEdit类,你的方法是改变他的风格,但是运行起来也不行啊,能说下到底什么实现么,谢谢了
      

  6.   

    用 CNewEdit 替换你关联变量的类名称 CEdit 即可
    CEdit mEdit; ===> CNewEdit mEdit;
      

  7.   

    右键edit控件 使能 multiline和wantreturn属性
      

  8.   

    忘了说了 我设的是密码风格,你点了multiline就不能使用了
      

  9.   

    首先感谢3L的回答,就像你所说的,实现了带编辑框中按下enter不会关闭,但是我还有一个问题
    那如何得到编辑框中的内容的?GetWindowText()这个函数不要要在CNewEdit类中重载?
    小弟愚笨 请教高手,怎么弄,重载的重载哪个函数?谢谢
      

  10.   


    给edit关联一个映射变量就可以
      

  11.   

    你不是和7L所说的么,我试了可以,但是怎么样获取这个编辑框中的内容呢?GetWindowText()不识别了
    因为从CEdit派生一个新类,关联变量 运行错误
    'GetWindowsText' : is not a member of 'CNewEdit'
      

  12.   

    OK可以了用这个函数GetDlgItemText(IDC_EDIT1,str);
    谢谢了