请教,当focus在对话框中的某一个控件上时,按下[ENTER]键,对话框会自动关闭。如何回避这个事件的触发。即按下ENTER,对话框不会关闭。

解决方案 »

  1.   

    按下[ENTER]键,相当于点击了当前处在焦点状态下的控件.
    对话框会自动关闭,一般是你将焦点放在了确定或取消按钮上.
    你要是不想关闭,将这两个按妞的return语句去掉
      

  2.   

    把OK,删除或者自己从新定义OnOK().
      

  3.   

    很简单,响应OnOK,然后将缺省的CDialog::OnOK();删除就可以了。
    头文件中:virtual void OnOK();
    CPP文件中:
    void C**Dlg::OnOK()
    {
        //CDialog::OnOK();
    }
    这样就可以了,OnOK中不要任何代码。
      

  4.   

    同意楼上的意见,
    也可以在PreTranslateMessage中处理
      if(pMsg->message == WM_KEYDOWN && pMsg->WPARAM == VK_RETURN)
      {
          if(pMsg->hWnd == this->GetSaftHwnd()
              return TRUE;
      }
      

  5.   

    BOOL CxxDlg::PreTranslateMessage(MSG* pMsg) 
    {
            // TODO: Add your specialized code here and/or call the base class
            if(pMsg->message == WM_KEYDOWN){         
                    switch(pMsg->wParam){
                    case VK_RETURN://截获回车 
                            return TRUE;
                    case VK_ESCAPE://截获ESC 
                           // return TRUE;
                            break;
                    }
            }
            return CDialog::PreTranslateMessage(pMsg);
    }也可以