怎么CEdit使用SetSel(0,-1)没有效果?

时间:2021-04-16 05:50:04
我有一个单文档程序,ToolBar上有一个派生自CEdit的编辑框,在MainFrame的OnCreate()中动态地创建的,已设置该EDIT有如下样式:
WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_LEFT|ES_AUTOHSCROLL|ES_NOHIDESEL
扩展样式为:
cs.dwExStyle|=WS_EX_CLIENTEDGE;
cs.dwExStyle|=WS_EX_NOPARENTNOTIFY;

我想实现获得集点是全选其中的文本,写有如下代码:
m_wndSearch.SetFocus();
m_wndSearch.SetSel(0,-1);

但是,各位高手,为什么没有用呢?
对于对话框中的编辑框则有用,为什么呢?

11 个解决方案

#1


m_wndSearch.SetSel(0,-1);是写在什么地方的?

#2


SetFocus()有效果没有?如果没有,那就可能是位置不对,可能在窗体还没有创建(只有对象)时执行的

#3


m_wndSearch.SetSel(0,-1)写在OnFocus处理函数中的。我设置断点,当编辑框获得焦点时,的确执行了m_wndSearch.SetSel(0,-1)的代码。就是不知为什么不显示被选中的状态。

#4


SetSel(0, 文本长度);

#5


参考这里的看看
http://www.vckbase.com/document/viewdoc/?id=469

#6


呵呵,哪个窗体的OnFocus()函数?

#7


打开CNewEdit的ClassWizard为其加上一个OnSetFocus()函数
在这个函数里SetSel(0,-1,TRUE);

#8


我这个EDIT控件是MainFrame的成员,不是ToolBar的成员,跟这个是不是有关系呢?

我先从CEdit中派生了一个新类叫CSearchEdit,在CSearchEdit中处理获得焦点的消息的,调用SetSel(0,-1)。这种做不行,然后,我又在处理CSearchEdit获得焦点的消息时,把消息通过SendMessage发送自定义消息给主框架,在主框加MainFrm中处理自定义消息,调用SetSel(0,-1)。可是仍然不行!

真是郁闷呀!

#9


你是不是希望达到这样的效果:当鼠标单击该控件时,该编辑框能够自动选中其中的文本?就像VC本身的查找、替换对话框中的编辑框一样?

如果是这样的要求,那么第一种方法应该是可行啊,奇怪。要不在该控件中的OnClick()函数中添加SetSel()函数试一试?

#10


谢谢 风清高,我要实现的就是你说的效果。
我试试OnClick吧!

#11


好,按风清高的方法搞定!谢谢大家,特别感谢风清高!

#1


m_wndSearch.SetSel(0,-1);是写在什么地方的?

#2


SetFocus()有效果没有?如果没有,那就可能是位置不对,可能在窗体还没有创建(只有对象)时执行的

#3


m_wndSearch.SetSel(0,-1)写在OnFocus处理函数中的。我设置断点,当编辑框获得焦点时,的确执行了m_wndSearch.SetSel(0,-1)的代码。就是不知为什么不显示被选中的状态。

#4


SetSel(0, 文本长度);

#5


参考这里的看看
http://www.vckbase.com/document/viewdoc/?id=469

#6


呵呵,哪个窗体的OnFocus()函数?

#7


打开CNewEdit的ClassWizard为其加上一个OnSetFocus()函数
在这个函数里SetSel(0,-1,TRUE);

#8


我这个EDIT控件是MainFrame的成员,不是ToolBar的成员,跟这个是不是有关系呢?

我先从CEdit中派生了一个新类叫CSearchEdit,在CSearchEdit中处理获得焦点的消息的,调用SetSel(0,-1)。这种做不行,然后,我又在处理CSearchEdit获得焦点的消息时,把消息通过SendMessage发送自定义消息给主框架,在主框加MainFrm中处理自定义消息,调用SetSel(0,-1)。可是仍然不行!

真是郁闷呀!

#9


你是不是希望达到这样的效果:当鼠标单击该控件时,该编辑框能够自动选中其中的文本?就像VC本身的查找、替换对话框中的编辑框一样?

如果是这样的要求,那么第一种方法应该是可行啊,奇怪。要不在该控件中的OnClick()函数中添加SetSel()函数试一试?

#10


谢谢 风清高,我要实现的就是你说的效果。
我试试OnClick吧!

#11


好,按风清高的方法搞定!谢谢大家,特别感谢风清高!