Проблемы с фокусировкой на кнопочной клавиатуре - PullRequest
0 голосов
/ 27 января 2010

Как можно предотвратить маленький пунктирный квадрат, который появляется на кнопке, когда она имеет фокус клавиатуры в диалоге. (с извинениями за технический жаргон). В какой-то момент я взломал решение, подклассифицировав кнопку WindowProc и уничтожив некоторые сообщения Windows, но хотел знать правильный путь.

На самом деле есть проблема с другим элементом управления в диалоге, также включающим клавиатуру. Этот другой элемент управления на самом деле также является кнопкой, но используется как групповое поле или панель, а не как функциональная кнопка. Но когда я нажимаю клавишу табуляции в диалоговом окне, эта «кнопка» группового блока выходит на передний план, скрывая статические элементы управления поверх него, поэтому я хотел предотвратить это.

В обоих случаях я пытался отключить WS_TABSTOP - не помогло.)

Ответы [ 2 ]

1 голос
/ 27 января 2010

Обе мои проблемы, упомянутые выше, были решены путем создания подкласса WndProcs и возврата 0 в ответ на сообщение 0x128 и его отбрасывания. Даже Spy ++ не смог идентифицировать это сообщение 0x128, и у меня его нет ни в одном заголовке. Но он отправляется каждому элементу управления в диалоговом окне при первом обращении к вкладке в диалоговом окне.

(я пробовал BN_SETFOCUS, как описано выше, а также WM_SETFOCUS, но это не помогло.)

Так что, если кто-нибудь знает, где найти сообщение о Windows 0x128 ...

0 голосов
/ 27 января 2010

Правильный способ - написать собственный элемент управления кнопками вместо того, чтобы использовать Windows по умолчанию.

Кроме того, вы можете предотвратить фокусировку на клавиатуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...