Собственно сабж. Как-то через kbhit() и цикл while?
volvo
17.12.2008 17:47
Цитата
Как-то через kbhit() и цикл while?
Сомневаюсь, ты не сможешь точно распознать, когда клавиша отпущена, поскольку заполняется буфер, и по крайней мере надо будет ждать, пока буфер не освободится... А если он переполнится? Оно тебе надо? Я бы, например, делал через WinAPI функции:
#include <windows.h> #include <iostream>
int main() { do { std::cout << "not pressed" << std::endl; Sleep(20); } while((::GetKeyState(VK_SPACE) & 0xFF00) == 0x0000);
Нет, признаки нажатия/отпускания... Если GetKeyState() & 0xFF00 равно нулю (т.е., если старший байт результата == 0) значит клавиша отпущена, иначе - нажата...
Поэтому при нажатии пробела первый цикл прекращается (GetKeyState() & 0xFF00 != 0), а при ее отпускании - прекращается второй цикл, результат AND-а опять нулевой...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.