如何从 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 更改下一个字符将放置在编辑控件中的位置?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2019 MFC 应用程序:如何从文本文件中读取并在不同字段/编辑控件中显示字符串?