0

我有一段代码可以擦除字符串的最后一个字符,然后将编辑控件中的文本设置为该新字符串。问题是,之后,接下来要输入的字符的位置会发生变化。例子:

编辑控制框:[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());}
4

2 回答 2

1

你试过编辑控件的 SetSel() 操作吗?

// get the initial text length
int nLength = edit.GetWindowTextLength();
// put the selection at the end of text
edit.SetSel(nLength, nLength);
于 2011-12-04T17:38:35.790 回答
0

您可以使用CEdit::SetSel()(我假设您正在使用CEdit)。只要让选择的开始和结束都成为字符串的结尾,您应该可以将光标移动到那里。详情可在http://msdn.microsoft.com/en-us/library/w9kftda4(v=vs.80).aspx找到

于 2011-12-04T17:34:06.713 回答