我重载了Edit control的OnKillFocus:if (invalid value)
{
AfxMessageBox("Error");
SetFocus();
}这个空件在modal对话框中使用没有任何问题,但用在modeless对话框中,
如果鼠标点击应用程序别的窗口的话,就会不断弹出"Error"对话框。
如果将AfxMessageBox改成::MessageBox(this-〉GetSafeHwnd, ...)
的话也要弹出三个“Error”对话框才能将焦点转到Edit控件上。MSDN说处理WM_KILLFOCUS消息的时候最好不要激活别的窗口,否则容易
死锁。我觉得好像只能设置一个定时器,延迟一段时间后再把输入焦点
转回Edit控件。不过这样做好像有点小题大作。不知道有没有好的解决方法?
{
AfxMessageBox("Error");
SetFocus();
}这个空件在modal对话框中使用没有任何问题,但用在modeless对话框中,
如果鼠标点击应用程序别的窗口的话,就会不断弹出"Error"对话框。
如果将AfxMessageBox改成::MessageBox(this-〉GetSafeHwnd, ...)
的话也要弹出三个“Error”对话框才能将焦点转到Edit控件上。MSDN说处理WM_KILLFOCUS消息的时候最好不要激活别的窗口,否则容易
死锁。我觉得好像只能设置一个定时器,延迟一段时间后再把输入焦点
转回Edit控件。不过这样做好像有点小题大作。不知道有没有好的解决方法?
先判断一下当前窗口是不是活动窗口不就可以了吗
{
::MessageBox(this-〉GetSafeHwnd(), "Error", ....); if (CWnd::GetActiveWindow() != this)
{
SetFocus();
}
}这样做如果是dialog only程序没问题,doc-view程序的话,
从edit控件切换到view试图还是要点击多次OK才行。这种情况
该如何解决?