C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Обработчик нажатия клавиш, не работает
Любитель
Отправлено: 18.02.2006, 22:45


Дежурный стрелочник

Группа: Участник
Сообщений: 53



Приведенный ниже фрагмент кода не работает
CODE

void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if (Key==VK_LEFT)//Стрелка влево
 {
 //..................
 //..................
 //..................
 }

Программа даже не реагирует на нажатие клавишь влево, вправо, вверх, вниз. Как быть?
avb
Отправлено: 18.02.2006, 23:11


Ученик-кочегар

Группа: Участник
Сообщений: 10



В свойствах формы установи KeyPreview в true
Любитель
Отправлено: 19.02.2006, 17:32


Дежурный стрелочник

Группа: Участник
Сообщений: 53



Установил-не помогает
olegenty
Отправлено: 20.02.2006, 08:09


Ветеран

Группа: Модератор
Сообщений: 2412



а при чём тут OnKeyPress??? хочешь стрелки, обрабатывай OnKeyDown. Разница между ними в том, что OnKeyPress суть WM_CHAR, а символа стрелки нет... , в то время как OnKeyDown суть WM_KEYDOWN — вот тут есть всё, что есть на клавиатуре...
Любитель
Отправлено: 20.02.2006, 14:16


Дежурный стрелочник

Группа: Участник
Сообщений: 53



Спасибо. Да действительно OnKeyDown. Но теперь возник еще один вопрос: надо обрабатывать нажатия сразу 2-х клавиш. Например стрелка вверх и стрелка вправо.
CODE

if (Key==VK_UP&&Key==VK_RIGHT)
{
//......................................
}

Это не работает sad.gif
olegenty
Отправлено: 20.02.2006, 14:33


Ветеран

Группа: Модератор
Сообщений: 2412



естественно не работает. событие возникает ПРИ НАЖАТИИ. и тебе нужно проверить состояние других интересующих клавишь, посредством GetKeyState для каждой интересующей, либо GetKeyboardState — для всей клавиатуры целиком.

Вернуться в Вопросы программирования в C++Builder