首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

Edit的EN_KillFocus事件,该怎么解决

2012-03-03 
Edit的EN_KillFocus事件假设对话框里有两个编辑框IDC_EDIT1,IDC_EDIT2,在两个编辑框的EN_KillFocus事件函

Edit的EN_KillFocus事件
假设对话框里有两个编辑框IDC_EDIT1,IDC_EDIT2,在两个编辑框的EN_KillFocus事件函数中MessageBox();   鼠标先点击IDC_EDIT1   后在点击IDC_EDIT2,结果是:先输出 "2 "的EN_KillFocus事件,再输出 "1 "的EN_KillFocus事件
先点击IDC_EDIT1在点击时IDC_EDIT2时,也是先输出 "1 "的,后输出 "2 "的;  

是因为焦点在从IDC_EDIT1向IDC_EDIT2传递时被MessageBox抢先获得了,故IDC_EDIT2还未真正获得焦点就已经先失去他了,就先执行了 "2 "的EN_KillFocus事件

怎样避免这样的情况,就是先点击IDC_EDIT1   后在点击IDC_EDIT2,不出现“2”的EN_KillFocus事件,MessageBox有必要要的。
 


[解决办法]
你可以先让对话框弹出来,然后再让2得到焦点
也就是说在1的kill事件中,
{
AfxMessageBox( "点击得是我! ");
m_ctEdit1.GetFocus();//让2得到焦点
}
[解决办法]
加个判断好了,2第二次离开再弹出

热点排行