对话框中有几个编辑框,如何在敲EnTER后移到下一个编辑框?

解决方案 »

  1.   

    出个馊主意:重载OnOK(),在该函数里将输入焦点置到第i个编辑框,i从0到N循环递增,呵呵“确定”按纽有另外的处理函数,比如OnSure()
      

  2.   

    在你之前,这个问题已经被问过799次了。
    作个参考吧。BOOL CComboBoxDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    CHAR NAME[125];
    ::GetClassName(GetFocus()->GetSafeHwnd(),NAME,125);
    if(!strcmp(NAME,_T("Button")))
    {
    //do you want...
    MessageBox("yes");//这样不好,你非要Ctrl+Alt+Del
    } char str[255];
    if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)
    {
    CWnd *pWnd = CWnd::FromHandle(pMsg->hwnd);
    switch(pWnd->GetDlgCtrlID())
    {
    case 1001:
    pWnd->GetWindowText(str,255);
    m_cb1.AddString(str);
    pWnd->SetWindowText(_T(""));
    return TRUE;
    break;
    case IDC_EDIT1:

    m_cb1.SetFocus();
    return TRUE;
    break;
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  3.   

    举个例子:(用回车代替tab键)
    procedure TfrmSetStation.edtDNSNameKeyPress(Sender: TObject; var Key: Char);
    begin
        if Key = #13 then
        begin
            Key := #0;
            SendMessage(Handle, WM_NEXTDLGCTL, 0, 0);
        end;
    end;
      

  4.   

    使用子类化,继承CEdit的一个类,然后对他操作,创建编辑框的时候使用你的字类,就可以了。
      

  5.   

    还是重载OnOK(),在里面用SETFOCUS(),SETSEL( ,)设置焦点就可以了