【发布时间】:2010-12-01 15:21:00
【问题描述】:
我正在使用 VC9,我有一个 CEdit 控件,只需单击一个按钮,其内容就会重置为默认测试(比如“填充”),然后我调用 SetFocus 以获得 CEdit控制。问题是光标在默认文本的开头闪烁,我希望它在默认字符串的结尾闪烁。
如何做到这一点?
【问题讨论】:
标签: c++ mfc visual-c++
我正在使用 VC9,我有一个 CEdit 控件,只需单击一个按钮,其内容就会重置为默认测试(比如“填充”),然后我调用 SetFocus 以获得 CEdit控制。问题是光标在默认文本的开头闪烁,我希望它在默认字符串的结尾闪烁。
如何做到这一点?
【问题讨论】:
标签: c++ mfc visual-c++
您可以使用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
【讨论】:
CCombobox 做同样的事情?
SetEditSel 方法。
您可以使用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);
它将光标放在字符串的末尾。
【讨论】:
我有一个奇怪的发现,但仍然与之相关。 这个解决方案最初对我不起作用。即使在调用 SetSel(-1) 之后,我的光标也会移动到编辑框的顶部。 然后我做了一些代码重组,它开始工作了。
学习的是,如果我在更新编辑控件后更新任何其他控件,光标将移动到编辑框的顶部。但如果编辑框是最后更新的控件,则光标停留在编辑框的末尾。
就像我有一个类似的代码
而且光标不会停留在最后。但是当我把它改成
我的光标显示在编辑框的末尾。
自从我发现要更新这里的知识库的那一天起,我就一直在想它。希望它可以帮助一些随机的灵魂,即使在调用 API 之后,光标也会跳到编辑框的顶部。
【讨论】: