我正在使用VC9,我有一个CEdit控件,其内容被重置为默认测试(比如 - “填充”),只需单击一个按钮,然后我调用SetFocus进行CEdit控件。问题是光标在默认文本的开头闪烁,我希望它闪烁默认字符串的结尾。
如何做到这一点?
答案 0 :(得分:14)
您可以使用CEdit::SetSel来完成此操作。
示例:
CEdit* e = (CEdit*)GetDlgItem(IDC_EDIT1);
e->SetWindowText("hello world");
e->SetFocus();
e->SetSel(0,-1); // select all text and move cursor at the end
e->SetSel(-1); // remove selection
答案 1 :(得分:7)
您可以使用CEdit::SetSel
来完成此任务:
CEdit* e = (CEdit*)GetDlgItem(IDC_EDIT1);
e->SetWindowText("hello world");
// e->SetSel(0,-1); // you don't need this line
e->SetFocus();
e->SetSel(-1);
它会将光标放在字符串的末尾。
答案 2 :(得分:0)
我有一个奇怪的发现,但仍与之相关。 这个解决方案最初对我不起作用。即使在调用 SetSel(-1)之后,我的光标也移动到了编辑框的顶部。 然后我做了一些代码重新洗牌,它开始工作了。
学习是如果我在更新编辑控件后更新任何其他控件,光标将移动到编辑框的顶部。但如果编辑框是最后一个控件更新,则光标将保留在编辑框的末尾。
就像我有一个类似
的代码光标不会停留在最后。但是当我把它改成
时我的光标显示在编辑框的末尾。
自从我在这里发现更新知识库的那一天起,我才想起它。希望它有助于一些随机的灵魂,即使在调用API之后光标也会跳到编辑框的顶部。