版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32716885/article/details/82655513
最近,我在修改自己绘制的CMyEdit类,发现了一个特别奇怪的问题:
1:当我在自绘CMyEdit时,使用SetWindowTextW()时,发现,每次光标都在第一位显示。
2:当使用m_edit.SetFouce()时,再使用SetWindowTextW()时,也会出现这个问题。
后来,说是使用SetSel设置一下光标的位置。
好多博友说SetSel(-1 , -1);时,可以将光标设置到最后一位上,结果我尝试了很久都不能成功。但是,只有不是-1 时都可以成功,说明,当参数是-1时是无效的
我的解决方案:
CStringW strText = L"123456";
第一步:
获取字符串的长度
int nLength = strText.GetLength();
第二步:
根据字符串的长度,设置光标的位置
m_edit.SetSel(nLength , nLength);
这样就可以设置成功
**************************************************************************************************************************************************
需要注意的是:必须设置了SetWindowTextW()这个函数后,再使用SetSel才会生效
m_edit->MoveWindow(rect);
m_edit->ShowWindow(SW_SHOW);
m_edit->SetWindowTextW(strInfo);
m_edit->SetFocus();
m_edit->SetSel(strInfo.GetLength(), strInfo.GetLength());