![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Куда девается сообщение клавиатуры? [D7, WinXP]
capkoh © (2005-10-08 20:45:00)Собственно мне не понятно куда пропадает сообщение при нажатии Alt+Backspace. В обработчик WM_CHAR и WM_KEYDOWN такая комбинация не попадает. Да еще и просто Alt куда-то девается. И что происходит с TEdit (стандартный копонент), если нажать) теже Alt+Backspace? Он почему-то начинает beep'ать и перерисовываться. Впрочем, такая комбинация начинает beep'ать и на других активных контролах. Однако, выяснилось, что Alt+Backspace и Ctrl+Backspace вызывают выполнение сообщения WM_KILLFOCUS (и еще чего-то) для текущего контрола. И ещё косвенный вопрос: как поймать Все сообщения клавиатуры? Неужели придется перегружать WNDProc?
P.S. Эти же симптомы есть и в наследнике TCustomControl.
capkoh (2005-10-10 22:24:00) [1]А вот что еще за сообщения WM_DEADCHAR и WM_SYSDEADCHAR? Точнее, зачем они могут мне пригодиться? Они нужны только для того, чтобы сообщить о том, что данный символ является комбинированным? И что, кроме себя, они еще посылают окну?
capkoh (2005-10-09 00:35:00) [2]
> Поведение WM_SYSххх идентично поведению соответствующих
> WM_xxx, насколько мне известно.
Да, проверено. Спасибо.
GuAV (2005-10-08 22:32:00) [3]Чтобы не beep'ало, достаточно не вызывать стандартный обработчик из WM_SYSCHAR.
Поведение WM_SYSххх идентично поведению соответствующих WM_xxx, насколько мне известно.
> как поймать Все сообщения клавиатуры? Неужели придется
> перегружать WNDProc?
Или ловить каждое в отдельном message-методе или перегружать WNDProc, второе, как мне кажется, в данном случае удобнее.
capkoh (2005-10-08 22:00:00) [4]За WM_SYSKEYDOWN спасибо. А убивается дальнейшая его обработка (что б не beep'ало и перерисовывалось) как обычно: Message.CharCode := 0?
И ещё. Есть ли промежуточные сообщения в обработке между WM_SYSKEYDOWN и WM_SYSCHAR? Т.к. лучше убить тогда обработку в конце WM_SYSCHAR, чтобы знать что же было нажато.
GuAV (2005-10-08 21:23:00) [5]
WM_SYSCHAR
WM_SYSKEYDOWN
WM_SYSKEYUP