Детское окно (CEdit) теряет фокус

Я программирую на C ++ с использованием архитектуры MFC Document / View. Я пытался достичь чего-то похожего на MFC CEdit потерял фокус на обработчике. Я обработал сообщение EN_KILLFOCUS, как предполагает ответ.

В основном, я делаю это: у меня есть текст, нарисованный в представлении. Когда пользователи щелкают область текста в представлении, я располагаю и показываю окно CEdit поверх него, чтобы пользователи могли редактировать текст. Когда редактирование теряет фокус, я получаю текст CEdit и сохраняю его в документе. Затем аннулируйте представление.

Тем не менее, я, кажется, получаю сообщение EN_KILLFOCUS только тогда, когда представление теряет фокус. Я должен нажать в другом месте, например, окно стыковки или панель инструментов, чтобы заставить CEdit потерять фокус. Я хочу, чтобы это произошло, когда я щелкаю где-нибудь еще в представлении, вне поля CEdit.

Я создаю CEdit в стиле WS_CHILD. Я пробовал WS_POPUP, но проблема все та же.

Любая помощь будет оценена.

1

Решение

Создайте производный класс / элемент управления CEdit. И создайте экземпляр этого класса в вашем представлении

Обрабатывать EN_KILLFOCUS в производном классе. Вы сможете обработать это сообщение, как только пользователь щелкнет за пределами окна управления редактированием.

Сохраните ваш editbox как WS_CHILD.

Установите фокус для просмотра мышью вниз по представлению, вызовите SerFocus () для LButtonDown представления.

1

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

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

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