我有一段代码,擦除字符串的最后一个字符,然后将Edit Control中的文本设置为该新字符串。问题是,之后,接下来要输入的字符的位置发生了变化。例子:
编辑控制框:[12345|](斜杠是下一个字符输入后将放置)
完成上述代码后
编辑控制框:[|12345](位置现在移动到前面,1)
之前
如何再次将位置移动到字符串的末尾?我的代码:
CString str1 = ""; //Temporary CString
eb1->GetWindowText(str1); //Store text from Edit Control to the CString
string strCheck1 = str1.GetString(); //Place the CString into a regular string
int s1 = strCheck1.length() -1; //Get index of last character and new size
bool check1 = true; //Boolean variable for the checking
//Get if character is valid
if((strCheck1[s1] <= '0' || strCheck1[s1] >='9') && strCheck1[s1] != '.') {check1 = false;}
//If is invalid I erase last character and put it back intact into the Edit Control
if(check1 == false) {strCheck1.erase(s1,1); eb1->SetWindowTextA(strCheck1.c_str());}
你试过SetSel()操作编辑控件吗?
// get the initial text length
int nLength = edit.GetWindowTextLength();
// put the selection at the end of text
edit.SetSel(nLength, nLength);
您可以使用CEdit::SetSel()
(我假设您正在使用CEdit
)。只要让选择的开始和结束都是字符串的结束,你应该可以把光标移动到那里。详见http://msdn.microsoft.com/en-us/library/w9kftda4(v=vs.80).aspx