/ / Искам да разбера къде фокусът принадлежи след EN_KILLFOCUS? - C + +, прозорци, визуално студио, winapi, mfc

Искам да разбера къде фокусът принадлежи след EN_KILLFOCUS? - C + +, прозорци, визуално студио, winapi, mfc

Сега създадох молбата си така: тя се изпълнява в контейнера на интернет браузъра (IE, FireFox, Chrome и т.н.). В моята програма има диалогов прозорец без диаграми, диалоговият прозорец съдържа един CEdit контрол.

Ето моя проблем: когато потребителят активира контрола "Редактиране", за да въведе нещо в него, контролът за редактиране се фокусира. Когато контрола за редактиране загуби фокуса, трябва да проверя дали входът е валиден. Ако не, ще покажа модел с

AfxMessageBox

, Но сега не мога да определя дали моята редакцияконтрола губи в собствената си молба. Тъй като контрола за редактиране може да загуби фокуса си с много средства, например, когато потребителят затвори браузъра, когато потребителят отвори текстова програма. В тези случаи просто ще прескоча проверката за невалидност.

Всеки може да ми каже как да разбера, по какъв начин моят контрол върху редактирането губи фокус.

Отговори:

1 за отговор № 1

Извикайте GetFocus () и вижте дали фокусът се е върнал в друг прозорец в нишката ви.

HWND hwndFocus = ::GetFocus();
if (hwndFocus != 0 && ::GetWindowThreadProcessId(hwndFocus, NULL) == ::GetCurrentThreadId())
{
// focus still in our thread
}