在edit控件的属性里有一个ES_NOHIDESEL,必须设此属性
解决方案 »
- [FFT]不会数学做FFT和小波,怎一个悲剧了得
- (快来接分啊,在线等)请问在VS2005中怎样将加入连接的lib文件去掉
- GlobalAlloc函数GMEM_ZEROINIT参数的疑问
- 如何让CXIMAGE配合上换肤软件对程序进行PNG换肤?
- 如何将调用的C++的可执行程序中的消息显示到VB的程序中?
- 200分求一个可以直接用的可发送附件,带验证的CSMTP类
- 请问可以让spy++检测不到程序中的主窗口和子窗口吗?
- 文本转换html???(字体格式)
- 如果利用vc把下位机的数据描在坐标系上
- 真是急死我了!!!我在装有VC++的机器上用DataGrid控件,没有问题,但在客户那儿(没有装VC++)却出现这样提示对话框“Cannot initialize data bindings!"
- 下载程序用什么写好呢 Winsock??? CAsynSocket???CSocket??? 还是......
- ●●●第一次来!提个问题有关对话框的!很简单!
我不是这个意思哦,我是想当edit获得焦点的时候使所有文本被选中,以方便用户输入。
但我用setsel(0,-1)以后,文本却没有被选中的状态显示,不知道怎么办。
当按tab键使edit控件获得焦点时,文本就已经被选中而且反白显示了,
但用鼠标使edit控件获得焦点时,用了SetSel也还不行
要不发送EM_SETSEL消息
((CEdit *) GetDlgItem( IDC_EDIT1) )->SetSel( 0 , -1 );
我是在响应了EN_SETFOCUS 消息后调用的m_editctrl.SetSel(0,-1);
这有问题吗,我再试试,先谢了
当你用鼠标左击时,先执行OnSetFocus,然后选中,没有错,但这之后由于你是左击,所以又变成了选择插入点的操作,这又使得selection消失,(因为在一个edit中左击会使selection消失),换成右击就对了。
不过我有一个办法:
在OnSetFocus()里面,SetTimer(1,100,NULL),启动一个timer,100毫秒之后(在处理完左击后)再把edit进行选择,响应WM_TIMER消息,在OnTimer()里,m_edit.SetSel(0,-1);KillTimer(1);
我已经试过了,完全可行,给分吧!
=) 确实是这样,哎,我真是缺乏分析问题的能力啊。
对了,能留下 email或qq吗,
添加一个int JustFocused成员变量
CMyEdit::CMyEdit()
{
JustFocused=0;
}
void CMyEdit::OnSetFocus(CWnd* pOldWnd)
{
CEdit::OnSetFocus(pOldWnd);
// TODO: Add your message handler code here
JustFocused=1;
}
void CMyEdit::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CEdit::OnLButtonUp(nFlags, point);
if(JustFocused)
{
this->SetSel(0,-1);
JustFocused=0;
}
}然后在你的Dlg中添加一个成员变量CMyEdit m_edit1;
在initialDlg中加入
m_edit1.SubClassDlgItem(IDC_EDIT1,this);好了,这个edit就具有了“自动”全选功能,不需要timer,毕竟timer资源有限
gameboy999(什么才是对的?) 的做法比我的好
To:coolxiao,你在vc版找我就可以了,我每天都上的