mfc — Обойти триггер события OnFocus / GetFocus, если окно приложения теряет активацию. Переполнение стека

У меня есть текстовое поле, которое принимает строковое значение. При потере фокуса он выполняет определенную функцию (скажем, функцию 1). Но даже если я потерял фокус на окне, это событие OnFocus срабатывает.

Предположим, у меня есть следующий код:

classA::OnTextBoxFocus()
{
CWnd* pCurrentFocus = GetFocus();

// if focus event execute function 1

}

Теперь я хочу поставить чек, чтобы узнать, активно ли окно приложения. Только если окно активно, OnFocus событие должно сработать.

Я узнал, что с помощью GetActiveWindow () или GetForegroundWindow () через пост «определить, является ли текущее окно активным окном (StackOverflow)«

Однако мне трудно поставить этот чек. Можете ли вы помочь мне понять, как реализовать на примере?

0

Решение

Я попытался проверить, имеет ли событие On focus значение NULL.

classA::OnTextBoxFocus()
{
CWnd* pCurrentFocus = GetFocus();

if(pCurrentFocus != NULL)
// if focus event execute function 1

}

это в настоящее время работает, как ожидалось. Теперь я могу обойти событие OnFocus, если поменяю текущее окно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]