Edit控件中使用SetWindowTextW时,光标总是在第一位?

版权声明:本文为博主原创文章,未经博主允许不得转载。 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());

猜你喜欢

转载自blog.csdn.net/qq_32716885/article/details/82655513