Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удерживание кнопок клавиатуры 
:(
    Опции темы
Orodret
Дата 15.4.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 16.11.2008

Репутация: нет
Всего: нет



Необходимо чтобы переменная q постоянно увеличивалась на 1, когда удерживается пробел

В Unit1.cpp включил функцию:

Код:

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,TShiftState Shift)
{
 if(Key==' ')
 q++;
}
А в Unit.h:

Код:

void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift);

Когда удерживаю нажатым пробел ничего не происходит, подскажите что ещё необходимо добавить чтобы заработало.
PM MAIL   Вверх
586
Дата 15.4.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 10
Всего: 146



Используй событие OnKeyPress.
PM   Вверх
Orodret
Дата 15.4.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 16.11.2008

Репутация: нет
Всего: нет



А как ей пользоваться?
Приведите пример
PM MAIL   Вверх
586
Дата 15.4.2009, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 10
Всего: 146



Также, как и OnKeyDown.

1. В окне Object TreeView выделяете форму.
2. В окне Object Inspector выбираете вкладку Events.
3. Находите в списке OnKeyPress и два раза кликаете по нему - метод автоматически создастся.
PM   Вверх
Orodret
Дата 15.4.2009, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 16.11.2008

Репутация: нет
Всего: нет



А если мне надо чтобы кнопок OnKeyDown было несколько например VK_LEFT и VK_RIGHT?
Удаётся создать только одну

Это сообщение отредактировал(а) Orodret - 15.4.2009, 21:01
PM MAIL   Вверх
586
Дата 15.4.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 10
Всего: 146



Цитата(Orodret @  15.4.2009,  21:25 Найти цитируемый пост)
Когда удерживаю нажатым пробел ничего не происходит,

не происходит потому, что переменную надо вывести на экран smile
Код
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
     if(Key == ' ') Caption = i++;
}

Несколько кнопок обработать не получится. Будет обрабатываться только одна. Это то же самое, что в блокноте удерживать кнопки 'a' и 'b', в результате будет писаться только 'b'.

Можно воспользоваться функцией GetKeyState для проверки состояния второй клавиши:
Код
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Key == VK_LEFT)
    {
        if(GetKeyState(VK_RIGHT) < 0)
        {
            // VK_LEFT and VK_RIGHT is down
            Caption = i++;
        }
    }
}

PM   Вверх
Orodret
Дата 15.4.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 16.11.2008

Репутация: нет
Всего: нет



Спасибо помогло smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0660 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.