Я программирую на C ++ с использованием архитектуры MFC Document / View. Я пытался достичь чего-то похожего на MFC CEdit потерял фокус на обработчике. Я обработал сообщение EN_KILLFOCUS, как предполагает ответ.
В основном, я делаю это: у меня есть текст, нарисованный в представлении. Когда пользователи щелкают область текста в представлении, я располагаю и показываю окно CEdit поверх него, чтобы пользователи могли редактировать текст. Когда редактирование теряет фокус, я получаю текст CEdit и сохраняю его в документе. Затем аннулируйте представление.
Тем не менее, я, кажется, получаю сообщение EN_KILLFOCUS только тогда, когда представление теряет фокус. Я должен нажать в другом месте, например, окно стыковки или панель инструментов, чтобы заставить CEdit потерять фокус. Я хочу, чтобы это произошло, когда я щелкаю где-нибудь еще в представлении, вне поля CEdit.
Я создаю CEdit в стиле WS_CHILD. Я пробовал WS_POPUP, но проблема все та же.
Любая помощь будет оценена.
Создайте производный класс / элемент управления CEdit. И создайте экземпляр этого класса в вашем представлении
Обрабатывать EN_KILLFOCUS в производном классе. Вы сможете обработать это сообщение, как только пользователь щелкнет за пределами окна управления редактированием.
Сохраните ваш editbox как WS_CHILD.
Установите фокус для просмотра мышью вниз по представлению, вызовите SerFocus () для LButtonDown представления.
Других решений пока нет …