请问各位高手:
    我在VC中用MFC做了一个文本框,目的是要能够接受文字输入,并响应Backspace和Enter键,做到能够退格和换行,可是在我设置光标显示后,换行和退格功能都能实现,但是对于光标就只能显示光标,光标不能跟着我输入的文字移动.......
    我想要得到的结果是:在输入文字后,光标能够始终跟在文字的后面.
    请各位大虾帮帮忙啦

解决方案 »

  1.   


    SendDlgItemMessage(ID_EDIT_SEL,EM_SETSEL,4,4);//
    GetDlgItem(ID_EDIT_SEL)->SetFocus();用EM_SETSEL这个消息,来改变光标的位置
      

  2.   

    int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CView::OnCreate(lpCreateStruct) == -1)
    return -1;
    CClientDC  dc(this);
    TEXTMETRIC mz;
    dc.GetTextMetrics(&mz);
    CWnd::CreateSolidCaret(mz.tmWeight/2048,mz.tmHeight);
    CWnd::ShowCaret();
    //CWnd::CreateSolidCaret(2,20);
    //CWnd::ShowCaret();

    return 0;
    }void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    CClientDC dc(this);
    TEXTMETRIC me;
    dc.GetTextMetrics(&me);
    if(0x0d == nChar)
    {
    inputstr.Empty();
    m_FristPoint.y += me.tmHeight;
    SetCaretPos(m_FristPoint);
    }
    else if(0x08 == nChar)
    {
    COLORREF clr = dc.SetTextColor(dc.GetBkColor());
    dc.TextOutW(m_FristPoint.x,m_FristPoint.y,inputstr);
    inputstr.TrimRight();
    dc.SetTextColor(clr);
    dc.TextOutW(m_FristPoint.x,m_FristPoint.y,inputstr);
    }
    inputstr += char(nChar);
    dc.TextOutW(m_FristPoint.x,m_FristPoint.y,inputstr);
    CSize size = dc.GetTextExtent(inputstr);
    CWnd::SetCaretPos(CPoint((m_FristPoint.x + size.cx),m_FristPoint.y));//光标跟着走 CView::OnChar(nChar, nRepCnt, nFlags);
    }void CTextView::OnLButtonDown(UINT nFlags, CPoint point)
    { m_FristPoint = point;
    CWnd::SetCaretPos(point);
    inputstr.Empty();
    CView::OnLButtonDown(nFlags, point);
    }