![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Seniya_Lutiy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 18.2.2005 Репутация: нет Всего: нет |
Здравствуйте. У меня такой вопрос: как отменить задержку перед началом повтора? (Мне нужно перемещать объект по экрану, как это делается в играх, с помощью клавиш, но из-за задержки приходится ждать начала повтора около секунды).
|
|||
|
||||
mvdr |
|
|||
физик ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1349 Регистрация: 31.12.2004 Где: Волгоград, Россия Репутация: нет Всего: 42 |
а если время в Timer уменьшить?
-------------------- Появляюсь редко, но часто метко Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Seniya_Lutiy, просто ловить надо не onKeyPress, а событие нажатия и отпускания клавиши (onKeyDown, onKeyUp). Между нажатием и отпусканием обработка идёт самостоятельно (ну, таймер там использовать можно, например...)
|
|||
|
||||
Seniya_Lutiy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 18.2.2005 Репутация: нет Всего: нет |
Понятно. я знаю, что код нажатой клавиши хранится в wParam, как его отдуда выташить? (Пример, если можно).
|
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Тебя onKeyDown не устраивает? Там никаких wParam нету, сразу код выдаётся.
А как вытащить код из wParam, если ты ловишь WM_KEYDOWN? Так wParam в чистом виде и есть virtual-key code. См. в Delphi пункт меню Help->Windows SDK. И там WM_KEYDOWN. Ты задачу бы получше описал... |
|||
|
||||
Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 1 Всего: 12 |
как вариант уменьшить вручную ее скорость в системе.
--------------------
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Нууу... Уменьшать скорость в системе... Радикально, радикально...
Разве пользователь об этом просил? Как он потом в ворде работать будет? Проще использовать альтернативные способы чтения с клавиатуры, благо их предостаточно. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20580 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
По KeyDown ты должен запоминать факт нажатия, по KeyUp - очищать (т.е. хранить дубль KeyState) либо пользоваться напрямую KeyState. А вот обрабатывать нажатые кнопы - только по таймеру нужной тебе частоты срабатывания, а не в обработчике клавиатурных событий.
Программно же задержку убрать нельзя, поскольку она - аппаратная. Можно ее уменьшить до 0.25 сек. - но это предел. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 1 Всего: 12 |
Snowy
не согласна, сначало естественно запоминается то что есть в системе, а при выходе восстанавливается... просто вопрос не совсем понятен, имеено как реализует его автор, поэтому я и дала ответ о том как просто уменьшить задержку повтора... --------------------
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Все равно не согласен. А если прога вылетит, а если некорректный код и восстанавливаться либо не будет, либо будет, но не всегда.
Да и вообще, я могу в это время параллельно работать с другими программами. Им от этого лучше не станет. Нужно просто использоваь корректную работу с клавиатурой, а не придумывать, как приспособить систему под свою программу ![]() Вот, например варианты: GetKeyState, GetKeyboardState, GetAsyncKeyState, keybd_event, Application.OnShortCut... вариантов много... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |