CEdit取消选择状态CEdit remove selection
不是简单的setfocus别的控件,就使Cedit失去选中状态了
转自https://www.cnblogs.com/finema/archive/2011/04/26/2029006.html
问题背景:
我的对话框里只含有一个CEdit 控件,在对话框初始化时,
在代码中我明明正确调用了CEdit的SetSel方法,pEdit->SetSel(-1,0);但是对话框显示时,CEdit控件里还是全选显示,而不是我想的没有选中内容的显示.
其实是CEdit的默认特性造成的,而不是CEdit的SetSel方法有问题, 在 OnInitDialog() 中调用的SetSel(-1,0) 取消选择是被系统正确处理的,只是CEdit是对话框的的第一个有焦点的控件,所以对话框显示时CEdit 得到了焦点,CEdit 控件得到焦点的默认处理方式就是全选,所以就看到上面所说的情况。
解决方法有多种:
方法1、CEdit 的 属性TABSTOP 设置为false
方法2、加入CEdit 得到焦点事件的处理
void CXXXDialog::OnSetfocusEdit1()
{
((CEdit *)GetDlgItem(IDC_EDIT1))->SetSel(-1, 0, false);
}
方法3:(没有测试过)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | BOOL CTestDlg::OnInitDialog() { // 此处省略程序自动生成的那些代码 // 。。。。。。 // 。。。。。。。 CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1); pEdit->SetWindowText( "aaaaaaa \r\n bbbbbbbb" ); pEdit->SetFocus(); // MSDN查看SetSel函数的介绍 // 此处,是让光标指到文本最末尾 pEdit->SetSel(-2, -1); return false ; // return TRUE unless you set the focus to a control } |
参考:
http://www.experts-exchange.com/Programming/System/Windows__Programming/MFC/Q_21136277.html
关键字:
CEdit remove selection
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现