在文本框中输入内容时,当按“Enter”时去执行一项操作,这要真么做?不退出对话框。

解决方案 »

  1.   

    方法有很多!
    1、用一个不显示的按扭,把它设置成缺省方式即:敲回车便是敲它;
    2、重载编辑框的OnChar函数,在里面响应回车消息;
    3、用键盘钩子,捕获回车消息;
      

  2.   

    重载CDialog::OnOK
    清掉  CDialog::OnOK()在对话框中,如果不用 OK 钮则直接删除它
      

  3.   

    看错了,设定你要执行的功能那个按钮为 default
    则你在 EDIT 中安下回车时会直接调用 default button
      

  4.   

    At first, 我很感激大家的关心,thanks!
       我有三个文本框需要这样做,所以我想重载OnChar函数可能会好一点。
       但是,好像文本框对应的控件变量并不能直接重载OnChar函数,需要先派生出
    一个CEDIT类,才能重载OnChar函数。当我这样做了之后,却不知怎样调用对话框
    的函数或把消息派发给对话框。
    void CEDIT_OPER::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
        if (nChar==VK_ENTER) 
    ......;
    CEdit::OnKeyDown(nChar, nRepCnt, nFlags);}
       而且,编译时还报错。
        error C2065: 'VK_ENTER' : undeclared identifier
      

  5.   

    在对话框中,用向导为你的三个文本框各定义一个控件变量。
    然后在对话框的h文件里,把三个控件变量的CEdit换成CEDIT_OPER。
      

  6.   

    preTranslateMassage()
    向编辑框发回车消息
      

  7.   

        
         VK_RETURN
      

  8.   

    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if (pMsg->message == WM_KEYDOWN)
    {
    //哥们儿, 注意: 这样不会被Esc , 或 Enter掉.. 
    if ((pMsg->wParam == VK_RETURN) ||(pMsg->wParam == VK_ESCAPE))
    {
       return TRUE;
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  9.   

    ctrl+w 添加PreTranslateMessage函数假如代码:
    if (pMsg->message == WM_KEYDOWN)
    {
    //假设你文本框ID为IDC_TEXT;
    if (pMsg->wParam == VK_RETURN && GetDlgCtrlID(pMsg->hwnd)==IDC_TEXT)
    {
                ...//调用你的处理函数
       return TRUE;
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
      

  10.   

    感谢所有帮助我的人!    To godsmile(笑非哮,世间还有我这号): 
        为什么编译时会出现这样的错误:
    error C2660: 'GetDlgCtrlID' : function does not take 1 parameters  
      

  11.   

    要在GetDlgCtrlID前加::,表明调用的是API函数,而不是CWnd::GetDlgCtrlID