怎样截获编辑框(CEdit)的回车事件?

解决方案 »

  1.   

    应该有消息映射吧。是什么我就忘记了。自己查找msdn吧。
      

  2.   

    可以用一个隐藏的默认Button代替!
      

  3.   

    在PreTranslateMessage中进行判断:
    if( pMsg->hwnd == m_edit.m_hWnd &&
        pMsg->message == WM_KEYDOWN &&
        pMsg->wParam == VK_RETURN )
    {
     ...
    }
      

  4.   

    重CEdit继承 在新类里相应WM_keydown并检测字符是否=回车 如果等就发送一个自定义消息.然后使用你自己的类就好了
      

  5.   

    同意sans的办法·
    但是bollom的办法是一个绕弯子的办法。
      

  6.   

    可以重载CEdit类,并在派生类中处理WM_CHAR消息。
      

  7.   

    對, 在PreTranslateMessage 中處理 ,
    if( pMsg->hwnd == m_edit.m_hWnd &&
        pMsg->message == WM_KEYDOWN &&
        pMsg->wParam == VK_RETURN )
    {
      // 在這里發送Message, 然后在 Owner 中截获 這個消息 NMHDR nm;
    nm.hwndFrom = m_hWnd;
    nm.idFrom = GetDlgCtrlID();
    nm.code = NM_RETURN;
    GetOwner()->SendMessage(WM_NOTIFY, nm.idFrom, (LPARAM)&nm);}
    在 Owner 的頭文件中定義:
        afx_msg void OnEditReturn(NMHDR*, LRESULT* );
    然后在 Owner 的.cpp 中 定義 消息 映射    ON_NOTIFY(NM_RETURN, 這是控件ID, OnEditReturn)就可以了