Изменить порог повторения ключа c ++ - PullRequest
1 голос
/ 18 сентября 2009

Я создаю тетрис с ++ (не c ++ .Net). Я чувствую, что мой контроль странный. Я хочу сделать так, чтобы, когда пользователь нажимает одну из клавиш со стрелками, около 10 мс, удерживая ее нажатой, запустит функцию повторения окон. По умолчанию оно установлено на 500 мс, и это слишком медленно для моей игры. Как я могу установить скорость, с которой он изменяется от нажатия клавиш до повторного нажатия клавиш? Не сколько раз / сек повторяется.

Спасибо

* я хочу изменить задержку повторения на короткую

На панели управления в настройках клавиатуры есть частота повторения, как мне установить это?

Ответы [ 3 ]

8 голосов
/ 18 сентября 2009

Обычно для этого вместо реакции на сообщение WM_CHAR, на которое действуют обычные настройки повтора клавиш, нужно искать WM_KEYDOWN и WM_KEYUP и принимать действие, основанное на таймере , который вы запустили. Например, если вы устанавливаете таймер на срабатывание каждые 50 мс, вы можете повторять его каждые 50 мс и при этом сразу же получать первое действие, когда получаете сообщение WM_KEYDOWN.

0 голосов
/ 18 сентября 2009

void Key_Set () { DWORD old = 0;

SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &old, 0);


SystemParametersInfo(SPI_SETKEYBOARDDELAY,0, &old, 0);

}

0 голосов
/ 18 сентября 2009

Согласно MSDN, похоже, что вы можете использовать функцию SystemParametersInfo и вызывать SPI_SETKEYBOARDSPEED, SPI_SETKEYBOARDDELAY.

...