我希望文本框的焦点始终在文本的最后,用GetSel()函数来控制焦点。
先申请一个CEdit型的变量m_RXEdit。然后在我写文本的地方加如后面两句
DWORD dwSel = m_RXEdit->GetSel();
m_RXEdit->SetSel(HIWORD(dwSel), HIWORD(dwSel)+1);
但是发现dwSel怎么读都读的是0。依然控制不到焦点。请问哪个地方控制错了?另外我可以在文本框的 change事件中加代码吧,是哪个呢,我在en_change里加的这个事件一直执行不到,谢谢。

解决方案 »

  1.   

    CString strEdit;
    m_edit1.GetWindowText(strEdit);
    m_edit1.SetSel(strEdit.GetLength(), strEdit.GetLength());
      

  2.   

    en_change消息是在内容变化后才执行的,焦点变化是没有消息可用的,
    真的要实现你说的功能的话,可以在Edit得到焦点的时候,在OnpreTranslatemessage中屏蔽掉左右移动的按键(这是硬办法),在Edit失去焦点时取消.
      

  3.   

    在en_change消息函数中加如代码:CString strEditText("");
    m_edit1.GetWindowText(strEditText);
    m_edit1.SetSel(strEditText.GetLength(), strEditText.GetLength());
      

  4.   

    GetSel()只是得到有被选择的文本的开始号码,没有选择文本的话就是0了。
      

  5.   

    CString str="ssssssssssssssssssssssk";
       m_Edit.SetWindowText(str);
       m_Edit.SetSel(str.GetLength(),str.GetLength());
       m_Edit.SetFocus();
       UpdateWindow();
      

  6.   

    m_Edit.SendMessage( EM_SETSEL, -2, -2 )