如何从MFC更改编辑控件中下一个字符的位置?

时间:2011-12-04 17:20:34

标签: c++ mfc editcontrol

我有一段代码可以删除字符串的最后一个字符,然后将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());}

2 个答案:

答案 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

找到