我在一个编辑框失去焦点时检查其中的数据有效性,当数据无效时想不让这个编辑框失去焦点,也就是说焦点继续在这个编辑框中,我搞了很久都没实现这个功能,请各位高手支个招吧,郁闷了好几天了
解决方案 »
- 关于MFC动态DLL工程中CBitmap::LoadBitmap失效的问题,高手速解!!!
- BindToStorage和BindToObject的区别是什么
- vs2005编译出来的程序在win2000上运行经常失去响应,问题出在CCriticalSection类上.在win2003上运行没有任何问题.
- SymLoadModule64函数调用问题
- 请问字符串累加怎么实现!
- 各位老大帮忙看看,很急
- 怎么获得已注册的文件类型?
- 100 分!!! 在哪能下载<<用tcp/ip进行网际互连(卷一)>>?
- 求救!!关于音频播放的问题。。。
- MFC向数据库添加数据
- WSAEventSelect使用时候的困惑?100分寻求问题答案.
- VisualStudio.net2003编译完的程序发布时需要附带3个dll ? boost有没有什么依赖?
CXXXDLG::OnChangeEdit1()
{
CString str;
m_edit1.GetWindowText(str);
if( !str合法 )
{
m_edit1.SetFocus();
}
}
正确的
{
CString str;
GetDlgItemText(IDC_EDIT1, str);
if (str != "test")
{
//不合法
GetDlgItem(IDC_EDIT1)->SetFocus();
}
}
鼠标在点到其他可编辑格中时判断发现输入的数据非法,然后想重新聚集到原来的格子中,
SetFocus()没有用呀
SetFocus();一起用才行
WNDPROC DefEditProc;2.在编辑控件产生的时候用DefEditProc=SetWindowLong(HWND,int)来新的消息函数设置给控件,返回值是原来的消息响应函数,用DefEditProc来保存,而EditProc的定义你可以参考以下的内容:
switch(msg)
{
case WM_KILLFOCUS: //TODO:Check the data here!
//........
break;
}
return CallWindowProc(DefEditProc,hwnd,msg,wparam,lparam);如果你用MFC编写,我想应该从CEDIT派生出一个新类,然后处理新类中的WM_KILLFOCUS消息(记得要调用父类的响应函数,否则可能没有办法正常显示控件)。