我有一段代码可以删除字符串的最后一个字符,然后将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());}
答案 0 :(得分:1)
您是否尝试过编辑控件的SetSel()操作?
// get the initial text length
int nLength = edit.GetWindowTextLength();
// put the selection at the end of text
edit.SetSel(nLength, nLength);
答案 1 :(得分:0)
您可以使用CEdit::SetSel()
(我假设您使用的是CEdit
)。只是让选择的开始和结束都是字符串的结尾,你应该能够将光标移动到那里。详情可在http://msdn.microsoft.com/en-us/library/w9kftda4(v=vs.80).aspx