| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Отключение задержки клавиатуры |
| Автор: KostX 15.4.2012, 18:20 |
| Христос Воскрес!!! Народ, помогите. Такая проблема: нужно отключить задержку клавиатуры перед повтором, как в играх. Как это можно реализовать? Пробовал в событии OnKeyDown при нажатии ставить проверочную переменную в true (кнопка нажата)(допустим Pressed = true;) и переменную в которой будет содержаться код нажатой клавиши приравнять к Key (допустим KeyKode = Key;) , а в событие OnKeyUp - проверочную переменную в false. (допустим Pressed = false;). Потом в отдельной функции выполнять действия соответствующие нажатым клавишам. И ничего не получается. Может кто подскажет, как отключение задержки вообще осуществляется? В нете искал, переписывал свой код в соответствии, вроде логика есть, но ничего не работает. |
| Автор: volatile 16.4.2012, 00:21 |
| KostX, дам один совет. В задержку клавиатуры лучше не лезть. Это разделяемый ресурс, и менять там что-то - совсем не красиво. Предлагаю сделать так: По ки-даун включать таймер, по ки-ап выключать таймер. Сообщения таймера обрабатывать как вы собирались обрабатывать события от клавиатуры. А задержку на таймер можете выставить вообще какую заблагорассудится. Ну в общем немножко фантазии и логики, и все будет чики-пуки. |
| Автор: KostX 16.4.2012, 14:11 |
| Идея хорошая. Но: 1. Нужно четко отстраивать интервал таймера (это не беда;) 2. При зажатии теперь вообще движения нет. Действия выполняются только при нажатии. Таймер при нажатии отключается, почему? Как это можно исправить? |
| Автор: Ampelia913 16.4.2012, 14:20 |
| Всех с праздником! Прошу Вас о помощи. Я не знаю как пропинговать сервер через С++ или Delphi Это исходники: #include <stdio.h> #include <conio.h> #include <math.h> main (); float #A(192.168.1.9); float #B(194.28.176.6); HACKING SERVER stat.kuznetsovsk.net.ua gast ping ip-adress 194.28.176.0; else ip adtess error config - ip adress configured 192.168.1.1 my.ukrtelekom.ua; name hacked server (BANAN.COM); {end; А это адрес сервера stat.kuznetsovsk.net.ua Прошу помогите, это очень важно! |
| Автор: KostX 16.4.2012, 19:27 |
| Ampelia913, прости мужик. Ничем помочь не могу. volatile, а если в этот разделяемый ресурс все-таки полезть? Ведь если игры делают без задержки клавиатуры, значит выход из ситуации точно есть. Не могли-бы вы мне дать пример (ну или ссылку на литературу), как пользоваться этой задержкой? Я уже весь интернет обшарил, ни одного работающего варианта не нашел. Как говорится "все средства хороши!"=) |
| Автор: KostX 18.4.2012, 19:29 | ||||
Я его и не отключаю. Просто на время зажатия кнопки, таймер сам приостанавливается. Когда я кнопку отпускаю - таймер тикает дальше и все работает замечательно.
Если-бы из этой кучи хоть один нормально работал... . |
| Автор: KostX 18.4.2012, 19:45 | ||
bool KeyPressed; int Key_id; - глобальные переменные. Интервал таймера 100мс
|
| Автор: volatile 18.4.2012, 23:54 | ||
KostX, Из кода что вы привели не ясно почему это происходит. Делаю предположение что билдер что-то там делает. (я не знаток д'Билдера) Могу вам предложить сделать следующее
В Инициализации формы вызовите set_timer (); В закрытии kill_timer (); Это, имхо, должно работать. |
| Автор: KostX 19.4.2012, 15:33 |
| volatile, спасибо огромное! Работает |
| Автор: Dem_max 21.4.2012, 05:21 |
| В играх задержка клавиатуры не влияет по той простой причине что игра хватает нажатия кнопок из DirectInput |
| Автор: Ampelia913 22.4.2012, 13:44 |
| Я наверное не там где нужно написала, и я не мужик. Мне просто нужна помощь, ну неужели никто не знает как пропинговать сервер через С++ или Delphi? Знаю что мое предыдущее сообщение вашей темы не касается, но я считаю, что если не KostX то хотя бы кто-нибудь другой должен знать. Народ подумайте, прошу! Добавлено через 1 минуту и 14 секунд volatile, вы не сможете разобраться? |
| Автор: volatile 22.4.2012, 17:23 | ||
Это точно, создайте топик с соответствующей темой.
|