У меня есть текстовое поле, которое принимает строковое значение. При потере фокуса он выполняет определенную функцию (скажем, функцию 1). Но даже если я потерял фокус на окне, это событие OnFocus срабатывает.
Предположим, у меня есть следующий код:
classA::OnTextBoxFocus()
{
CWnd* pCurrentFocus = GetFocus();
// if focus event execute function 1
}
Теперь я хочу поставить чек, чтобы узнать, активно ли окно приложения. Только если окно активно, OnFocus
событие должно сработать.
Я узнал, что с помощью GetActiveWindow () или GetForegroundWindow () через пост «определить, является ли текущее окно активным окном (StackOverflow)«
Однако мне трудно поставить этот чек. Можете ли вы помочь мне понять, как реализовать на примере?
Я попытался проверить, имеет ли событие On focus значение NULL.
classA::OnTextBoxFocus()
{
CWnd* pCurrentFocus = GetFocus();
if(pCurrentFocus != NULL)
// if focus event execute function 1
}
это в настоящее время работает, как ожидалось. Теперь я могу обойти событие OnFocus, если поменяю текущее окно.
Других решений пока нет …