Работа с клавиатурой.

Автор: Кожевников Евгений

Метод обработки нажатий клавиатуры в C++ Builder не очень то подходит для игр, ну данный метод тоже не идеален, и все же он показал себя более быстрым…
Метод состоит в чтении состояния клавиатуры с помощью функции Win32
GetAsyncKeyState(), которая получает информацию о последнем известном состоянии клавиатуры в виде таблицы состояний. При его использовании не требуется написание обработчика клавиатуры!
Функция имеет следующий прототип:
SHORT GetAsyncKeyState(int virtual_key);
Вы просто передаете функции виртуальный код клавиш, состояние которой желаете узнать, если старший бит возвращаемого значения равен 1, эта клавиша нажата.
Для проверки удобно использовать пару макросов они облегчают написание кода.

#define KEYDOWN(vk_code) \
((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code) \
((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)


Преимущество функции GetAsyncKeyState() в том, что она не привязана к циклу событий.
Можно проверить нажатие клавиши в любой момент, в любом месте программы. Достаточно написать код наподобие этого:

// проверяем, нажал ли пользователь - Esc
if (KEYDOWN(VK_ESCAPE))
{

// какие либо действия…
}
// проверяем, не нажата ли клавиша – Enter
if (KEYUP(VK_ENTER))
{

// какие либо действия…
}




Hosted by uCoz