我的程序是多文档应用程序,并且子窗体基类是CFormView,窗体中有很多editbox,现在想再输入以后,按回车直接到下一个editbox,如何用回车来控制窗口中焦点的切换?小弟刚学编程,菜鸟一个,还忘大家能帮帮我。

解决方案 »

  1.   

    首先将各个EditBox的Tab Order设置好,然后增加窗口PreTranslateMessage消息
    BOOL PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )
    {
    if( (int)pMsg->wParam == 13/*VK_ENTER*/ )
    {
    pMsg->wParam = VK_TAB;
    }
    }

    return CFormView::PreTranslateMessage(pMsg);
    }
      

  2.   

    拦截键盘的回车消息,然后SetFocus
      

  3.   

    1。首先把这些edit的id设置为连续
    IDC_EDIT1   2000
    IDC_EDIT2   2001
    IDC_EDIT3   2002
    BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )
    {  
    for(int i=IDC_EDIT1; i<IDC_EDIT3; i++)
    {
    if(pMsg->hwnd == GetDlgItem(i)->m_hWnd)
    {
    GetDlgItem(i+1)->SetFocus();
    return TRUE;
    }
    }
    } return CDialog::PreTranslateMessage(pMsg);
    }