Как я могу помешать CWnd получить фокус? - PullRequest
1 голос
/ 17 июня 2010

Я пишу приложение MFC и нуждаюсь в кнопке, которая не смещает фокус ввода от другого окна.

Удаление стиля WS_TABSTOP, к сожалению, не помогает, когда пользователь нажимает кнопку мышью.Когда я блокирую WM_LBUTTONDOWN, я не получаю визуально нажатую индикацию, поэтому это тоже не работает.

1 Ответ

3 голосов
/ 17 июня 2010

Если есть конкретное окно, в котором вы хотите сохранить фокус, вы можете просто вернуть фокус обратно в окно, используя команду CWnd::SetFocus() в обработчике OnLButtonDown вашей кнопки.

Если вы хотите восстановить фокус в одном из нескольких окон, вы можете попробовать создать подкласс CButton и перехватить сообщение CWnd::OnSetFocus(), которое отправляется, когда фокус клавиатуры изменяется на кнопку.

Событие OnSetFocus() включает CWnd элемента управления, который только что потерял фокус, так что вы можете вручную вернуть его обратно, либо как часть самого события OnSetFocus(), либо позже как часть обработчика OnLButtonDown() снова .

...