Сега създадох молбата си така: тя се изпълнява в контейнера на интернет браузъра (IE, FireFox, Chrome и т.н.). В моята програма има диалогов прозорец без диаграми, диалоговият прозорец съдържа един CEdit контрол.
Ето моя проблем: когато потребителят активира контрола "Редактиране", за да въведе нещо в него, контролът за редактиране се фокусира. Когато контрола за редактиране загуби фокуса, трябва да проверя дали входът е валиден. Ако не, ще покажа модел с
AfxMessageBox
, Но сега не мога да определя дали моята редакцияконтрола губи в собствената си молба. Тъй като контрола за редактиране може да загуби фокуса си с много средства, например, когато потребителят затвори браузъра, когато потребителят отвори текстова програма. В тези случаи просто ще прескоча проверката за невалидност.
Всеки може да ми каже как да разбера, по какъв начин моят контрол върху редактирането губи фокус.
Отговори:
1 за отговор № 1Извикайте GetFocus () и вижте дали фокусът се е върнал в друг прозорец в нишката ви.
HWND hwndFocus = ::GetFocus();
if (hwndFocus != 0 && ::GetWindowThreadProcessId(hwndFocus, NULL) == ::GetCurrentThreadId())
{
// focus still in our thread
}