C ++ KeyDownEvent не запускается в форме Windows

Это код C ++ в части «private:» формы Windows. Я хочу, чтобы элемент управления «head» (представляющий собой графический блок) перемещался в направлении последней нажатой клавиши со стрелкой вниз. Поэтому я добавил таймер (tmrStep) и поместил движение в его тиковое событие. В событии нажатия клавиши btnPause (которое всегда имеет фокус) я установил направление int, в соответствии с которым нажимается клавиша. Когда код запускается, элемент управления Head перемещается вверх независимо от нажатия клавиш, и я знаю, что событие Key down не вызывается, потому что я пытался установить точку останова в событии нажатия клавиш, но программа продолжалась после нажатия клавиш.

System::Void tmrStep_Tick(System::Object^  sender, System::EventArgs^  e)
{
if (direction == 1)
Head->Location = Point(Head->Location.X + 10, Head->Location.Y);
if (direction == 3)
Head->Location = Point(Head->Location.X - 10, Head->Location.Y);
if (direction == 0)
Head->Location = Point(Head->Location.X , Head->Location.Y - 10);
if (direction == 2)
Head->Location = Point(Head->Location.X , Head->Location.Y + 10);
}
System::Void btnPause_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e)
{
if (e->KeyCode == Keys::Down)
direction = 2;
if (e->KeyCode == Keys::Up)
direction = 0;
if (e->KeyCode == Keys::Left)
direction = 3;
if (e->KeyCode == Keys::Right)
direction = 1;
}

На всякий случай, btnPause — это кнопка управления.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]