Для редактирования ленты MFC требуется двойной щелчок

Я создал простое ленточное приложение MFC с помощью мастера приложений. Затем я удалил все элементы управления на ленте и добавил простую кнопку, два поля редактирования и добавил обработчики событий для каждого из них.

Обработчик события для кнопки представляет собой простой цикл обработки сообщений:

void CRibbon2Doc::OnButton(){
MSG msg;
while (1){
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}

И обработчики сообщений для двух полей редактирования также просты:

void CRibbon2Doc::OnEdit1(){
OutputDebugString(_T("Box1"));
}void CRibbon2Doc::OnEdit2(){
OutputDebugString(_T("Box2"));
}

Вот моя проблема:

Случай: кнопка не нажата, т.е. мой цикл сообщений не работает

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

Случай: кнопка нажата, т.е. мой цикл сообщений запущен

В этом случае, когда я нажимаю поле редактирования, я не вижу мигающий курсор, который позволяет мне писать внутри поля редактирования. Мне нужно дважды щелкнуть, чтобы появился мигающий курсор. Это проблема, я бы не хотел, чтобы пользователи дважды щелкали внутри окна, чтобы активировать его.

Подскажите, пожалуйста, в чем может быть причина и как сделать так, чтобы я мог одним щелчком мыши получить мигающий курсор внутри полей редактирования в случае, когда мой цикл сообщений работает в фоновом режиме.

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

1

Решение

Задача ещё не решена.

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


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