Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2013, 13:50   #1
Shkolota
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 51
Восклицание WM_CHAR

Здравствуйте. Пишу компонент для Delphi, и появилась необходимость обрабатывать нажатие клавиш внутри этого компонента. Использую для этого сообщение WM_CHAR. Обычные клавиши обрабатываются нормально, но как быть с виртуальными (стрелки, Delete и т.д.)? При их нажатии это сообщение вообще не возникает. Возможно, я делаю что-то не так или для таких клавиш существует какое-то другое сообщение? WM_KEYDOWN тоже не работает.
Shkolota вне форума Ответить с цитированием
Старый 16.11.2013, 14:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может оно и работает, но самому окну ничего не приходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2013, 14:29   #3
Shkolota
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 51
По умолчанию

Установил на форму Edit, проверил, в нем эти кнопки работают (onKeyDown). Или я не так понял?
Shkolota вне форума Ответить с цитированием
Старый 16.11.2013, 14:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в нем они и будут работать, там все описано красиво )
Цитата:
The WM_CHAR message is posted to the window with the keyboard focus
А у тебя этот компонент фокус получает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2013, 14:58   #5
Shkolota
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 51
По умолчанию

Да, компонент находится под фокусом. Тем более, что остальные кнопки (обычные символы) в этом сообщении обрабатываются нормально. Для проверки написал здесь единственную строку: 'Halt;'. При нажатии любой кнопки кроме стрелок, Delete и т.д. программа закрывается.
Shkolota вне форума Ответить с цитированием
Старый 16.11.2013, 20:06   #6
Shkolota
Пользователь
 
Регистрация: 02.04.2013
Сообщений: 51
По умолчанию

Всем спасибо, проблема решена. Сообщение CN_KeyDown нормально обрабатывает виртуальные клавиши. Когда использовал сообщение WM_KeyDown, при нажатии стрелок компонент передавал свой фокус другому компоненту. В CN_KeyDown такой проблемы нет.
Shkolota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с перехватом WM_CHAR через хук wanes101 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.07.2013 06:59