随便建一对话框,一个文本框,响应了回车按下的消息,回车后会弹出一个提示框,如果再按回车来确认对话框,这时候,程序又会对该次回车的按下进行响应,又会弹出提示框来。我本意是在文本框输入后,回车进行确认,弹出一个提示框进行说明,再按回车,应该返回到文本框的编辑状态。想问这有什么办法吗?

解决方案 »

  1.   

    第二次MessageBox后把文本框setfocus()
    不就选中了嘛?
      

  2.   

    重载PreTranslateMessage函数,函数里面记录回车按键是第几次,对于第二次就SetFocus,之后直接返回
      

  3.   

    焦点在文本框上,
    回车,
    弹出提示框,
    回车确认,
    提示框消失,
    但是,文本框对这个回车确认又响应了,又弹出了提示框。
    我知道把焦点从文本框移开,就不会响应了,但我要的是焦点还是停留在文本框上。不知道还有别的办法没有?
    没有,就只能记录回车键按下的次数,来进行判断了……不知道能否在MessageBox()后面,把回车键消息从消息队列里取出来,然后扔掉?如果可以,该怎么实现呢?
      

  4.   

    判断焦点是否在文本框上不就行了if (GetFocus() == &m_Edit)
    {
      MessageBox(...);
    }
      

  5.   


    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
    {
      if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
      {
        if (GetFocus()==GetDlgItem(IDC_EDIT1))
        {
           AfxMessageBox("按回车后返回到文本框的编辑状态");
           return TRUE;
        }
      }
      return CDialog::PreTranslateMessage(pMsg);
    }
      

  6.   

    问题找到了,是我没去判断WM_KEYDOWN,只判断了VK_RETURN。