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

Posted

技术标签:

【中文标题】如何从 MFC 更改下一个字符将放置在编辑控件中的位置?【英文标题】:How to change the position where next character will be place in the Edit Control from MFC? 【发布时间】:2011-12-04 17:20:33 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

// get the initial text length
int nLength = edit.GetWindowTextLength();
// put the selection at the end of text
edit.SetSel(nLength, nLength);

【讨论】:

由于某种原因,在浏览功能时,我认为 CEdit::SetSel 是选择突出显示的字符,而不是这个;我想我应该尝试过。谢谢。【参考方案2】:

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

【讨论】:

以上是关于如何从 MFC 更改下一个字符将放置在编辑控件中的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何访问 MFC 中的 activex 控件?

Visual Studio 2019 MFC 应用程序:如何从文本文件中读取并在不同字段/编辑控件中显示字符串?

当我按下对话框窗口中的按钮时,如何在该对话框中更改/附加编辑控件框的文本

从 MFC 中的编辑控件写入文本 [重复]

从另一个更改编辑 mfc 控件文本

编辑控件 MFC 中光标位置更改时是不是有通知代码?