请问如何使RETURN键和TAB键在CEDIT控件有相同的动作,也就是按下回车键时焦点移走.
另外如何判断插入符在控件的最左侧谢谢.

解决方案 »

  1.   

    在回车键的消息处理函数里用KillFocus()函数
      

  2.   

    在pretranslatemessage消息里面处理,碰到是VK_RETURN消息且焦点在edit内就把VK_RETURN改为tab,然后继续进行默认处理
      

  3.   

    ygzdev(TheEcho) :
    请教如何把VK_RETURN改为tab
      

  4.   

    BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg) 
    {

    if( pMsg->message == WM_KEYDOWN )
    {        
    switch( pMsg->wParam )
    {
    case VK_RETURN:
    //输入焦点在edit1
    if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd )
    {
    GetDlgItem(IDC_EDIT1)->SendMessage(WM_KILLFOCUS, 0, 0);
    GetDlgItem(IDC_EDIT2)->SetFocus();
    }

    return TRUE; }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  5.   

    BOOL C****Dlg::PreTranslateMessage(MSG* pMsg) 
    {

    if( pMsg->message == WM_KEYDOWN )
    {        
    switch( pMsg->wParam )
    {
      case VK_RETURN:
                             pMsg->wParam=VK_TAB; }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }即可
      

  6.   

    写掉了一点
    BOOL C****Dlg::PreTranslateMessage(MSG* pMsg) 
    {

    if( pMsg->message == WM_KEYDOWN )
    {        
    switch( pMsg->wParam )
    {
      case VK_RETURN:
                          if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd )
                       pMsg->wParam=VK_TAB; }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    即可
      

  7.   

    pMsg->wParam=VK_TAB就把VK_RETURN改了啊,上面lixiaosan(小三)说的GetSel()就可以判断插入符在最左端,GetSel(&start,&end);判断start是不是=end是不是等于0,应该可以
      

  8.   

    int nStart, nEnd;
    m_edit1.GetSel(nStart,nEnd);
    if(nStart == 0)
    {
    AfxMessageBox("光标在最左侧!");
    }
      

  9.   

    int nStart, nEnd;
    m_edit1.GetSel(nStart,nEnd);
    if( (nStart == nEnd) && (nStart == 0) && (nEnd == 0))
    {
    AfxMessageBox("光标在最左侧!");
    }
    }