Работа с
клавиатурой. Автор: Кожевников Евгений Метод обработки нажатий клавиатуры в 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)) { // какие либо действия… } |