关于一个vc6.0中文本框焦点控制的问题?谢谢!
我希望文本框的焦点始终在文本的最后,用GetSel()函数来控制焦点。
先申请一个CEdit型的变量m_RXEdit。然后在我写文本的地方加如后面两句
DWORD dwSel = m_RXEdit->GetSel();
m_RXEdit->SetSel(HIWORD(dwSel), HIWORD(dwSel)+1);
但是发现dwSel怎么读都读的是0。依然控制不到焦点。请问哪个地方控制错了?
另外我可以在文本框的 change事件中加代码吧,是哪个呢,我在en_change里加的这个事件一直执行不到,谢谢。
问题点数:50、回复次数:7Top
1 楼lixiaosan(小三)回复于 2005-08-02 14:25:56 得分 0
CString strEdit;
m_edit1.GetWindowText(strEdit);
m_edit1.SetSel(strEdit.GetLength(), strEdit.GetLength());Top
2 楼happyparrot(快乐鹦鹉)回复于 2005-08-02 14:44:32 得分 0
小三都已经说了,没有补充了。Top
3 楼dirdirdir3(风)回复于 2005-08-02 15:03:14 得分 0
en_change消息是在内容变化后才执行的,焦点变化是没有消息可用的,
真的要实现你说的功能的话,可以在Edit得到焦点的时候,在OnpreTranslatemessage中屏蔽掉左右移动的按键(这是硬办法),在Edit失去焦点时取消.Top
4 楼younggle(洋溢)回复于 2005-08-02 15:06:57 得分 0
在en_change消息函数中加如代码:
CString strEditText("");
m_edit1.GetWindowText(strEditText);
m_edit1.SetSel(strEditText.GetLength(), strEditText.GetLength());
Top
5 楼dirdirdir3(风)回复于 2005-08-02 15:07:07 得分 0
GetSel()只是得到有被选择的文本的开始号码,没有选择文本的话就是0了。Top
6 楼goingup(向我开火!)回复于 2005-08-03 08:40:19 得分 0
CString str="ssssssssssssssssssssssk";
m_Edit.SetWindowText(str);
m_Edit.SetSel(str.GetLength(),str.GetLength());
m_Edit.SetFocus();
UpdateWindow();Top
7 楼tutu_cloud(拔光毛的兔兔)回复于 2005-08-03 10:48:08 得分 0
m_Edit.SendMessage( EM_SETSEL, -2, -2 )Top




